Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JUnit 5. Vale a pena migrar? - v1.1.0 - SouJava Online

JUnit 5. Vale a pena migrar? - v1.1.0 - SouJava Online

Mesmo lançado há mais de 1 ano, o JUnit 5 ainda perde muito espaço para suas versões anteriores no mercado principalmente com projetos legados. Nessa talk vamos ver que é interessante e totalmente viável migrar e aproveitar suas vantagens.

Talk apresentada no SouJava Online

https://www.meetup.com/SouJava/events/262008148/

https://www.youtube.com/watch?v=e37RHY49E1w

Marco Paulo Ollivier

June 10, 2019
Tweet

More Decks by Marco Paulo Ollivier

Other Decks in Technology

Transcript

  1. Marco Ollivier Análise de Sistemas @ Infnet Software Engineer @

    OLX Mentor de novos talentos @ Codenation Co-organizador @ GopheRio
  2. Agenda • Introdução e um pouco de teoria • Primeiro

    contato • Escrevendo os primeiros testes • Usando o JUnit 5 • Conclusão • Perguntas
  3. Clientes felizes são clientes pagantes www.monitis.com/blog/why-application-monitoring-is-critical-for-your-business/ Muitas pessoas ainda compram

    a mentalidade "se você construir, eles virão”. Se você colocar o cliente em primeiro lugar, ele continuará fiel ao seu aplicativo. …uma das piores coisas para o seu negócio é um site propenso a erros. Nada impulsionará os clientes se tiverem que esperar o site carregar.
  4. Quanto vale 1/4 de seg para o Google? danielscott.com.br/como-1-segundo-custava-16-bilhao-em-vendas-a-amazon/ O

    Google estima que 1/4 de segundo a mais para carregar uma busca resultaria numa perda de 8 milhões de buscas por dia
  5. "Se você está trabalhando em uma linguagem funcional, uma unidade

    provavelmente será uma única função. Seus testes de unidade chamarão uma função com parâmetros diferentes e garantirão que ela retorne os valores esperados. Em uma linguagem orientada a objetos, uma unidade pode variar de um único método para uma classe inteira.” Traduzido do artigo do Ham Vocke linkado abaixo O que é um teste? https://martinfowler.com/articles/practical-test-pyramid.html
  6. Import de dependências - JUnit 5 De cara já notamos

    que não é mais uma única dependência necessária para utilizamos o JUnit.
  7. Estrutura JUnit 5 Platform Launcher: Serve como base para o

    lançamento de estruturas de teste na JVM. Define a API TestEngine para desenvolver uma estrutura de teste que seja executada na plataforma. Onde está definida a interface TestEngine que define os contratos a serem utilizados pelos frameworks que rodarão na plataforma. Jupiter Engine: É o novo modelo de programação e de extensão de modelos para escrita de testes. O projeto Jupiter fornece uma implementação do TestEngine. Vintage Engine: É uma implementação do TestEngine que oferece compatibilidade com o JUnit 3 e o JUnit 4
  8. Pre requisitos … ou seja: Use Java 8+ 
 Você

    até pode usar uma versão anterior, mas é por sua conta. https://junit.org/junit5/docs/current/user-guide/#overview-java-versions
  9. Mudou o nome, mas faz a mesma coisa JUnit 5

    JUnit 4 @BeforeEach @Before É executada antes de cada: @Test, @RepeatedTest, @ParameterizedTest, ou @TestFactory @AfterEach @After É executada depois de cada: @Test, @RepeatedTest, @ParameterizedTest, ou @TestFactory @BeforeAll @BeforeClass É executada antes de todos: @Test, @RepeatedTest, @ParameterizedTest, e @TestFactory @AfterAll @AfterClass É executada depois de todos: @Test, @RepeatedTest, @ParameterizedTest, e @TestFactory @Disable @Ignore A documentação diz que não é exatamente a mesma coisa, mas funciona de forma análoga. Serve para pular algum teste específico durante a execução.
  10. JUnit 5 JUnit 4 @BeforeEach @Before @AfterEach @After @BeforeAll @BeforeClass

    @AfterAll @AfterClass @Disable @Ignore Mesmo teste anterior reescrito
  11. E mesmo que você esteja usando o JUnit 5, mas

    estiver usando o projeto Vintage, também não funcionará. Teste público
  12. Como tornar mais claro o que o teste faz? Apenas

    não seria, digamos… recomendável
  13. Cenário atual • Já está estável desde 2017 • Ainda

    não é tão difundido • JUnit 4 ainda é largamente utilizado mesmo em soluções mais recentes
  14. Vantagens • Modular • Extensível • Moderno (Suporte a recursos

    que não eram viáveis até o JUnit 4) • Compatível com versões anteriores • Testes em lambdas • Testes aninhados • Testes dinâmicos • Etc etc etc