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

JUnit 5. Vale a pena migrar? - v1.0.0 - Java @ Rio #21

JUnit 5. Vale a pena migrar? - v1.0.0 - Java @ Rio #21

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 Sou Java Rio de Janeiro.

https://www.meetup.com/Java-at-Rio/events/258387041/

Marco Paulo Ollivier

March 14, 2019
Tweet

More Decks by Marco Paulo Ollivier

Other Decks in Programming

Transcript

  1. Agenda • Introdução e um pouco de teoria • Primeiro

    contato • Escrevendo os primeiros testes • Usando o JUnit 5 • Conclusão • Perguntas
  2. "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
  3. Import de dependências - JUnit 5 De cara já notamos

    que não é mais uma única dependência necessária para utilizamos o JUnit.
  4. 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
  5. 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
  6. 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.
  7. E mesmo que você esteja usando o JUnit 5, mas

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

    não seria, digamos… recomendável
  9. 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
  10. 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