JUnit 5 @ Anotação de teste

JUnit 5 @ Anotação de teste

1. Visão geral

Neste artigo, faremos uma revisão rápida da anotação@Test de JUnit. Esta anotação fornece uma ferramenta poderosa para executar testes de unidade e regressão.

2. Configuração do Maven

Para usarlatest version of JUnit 5, precisaremos adicionar a seguinte dependência Maven:


    org.junit.jupiter
    junit-jupiter-engine
    5.1.0
    test

Usamos o escopotest porque não queremos que o Maven inclua essa dependência em nossa compilação final.

Uma vez que o plug-in infalível ainda não oferece suporte nativo completo ao JUnit 5,we’ll also need to add a provider, que informa ao Maven onde encontrar nossos testes:


    maven-surefire-plugin
    2.19.1
    
        
            org.junit.platform
            junit-platform-surefire-provider
            1.0.2
        
    

Em nossa configuração, usaremos o surefire 2.19.1 porque,at the time of writing, version 2.20.x is not compatible with the junit-platform-surefire-provider.

3. Método em teste

Em primeiro lugar, vamos construir um método simples que usaremos em nossos cenários de teste para mostrar os recursos de anotação de@Test:

public boolean isNumberEven(Integer number) {
    return number % 2 == 0;
}

Este método deve retornartrue se o argumento passado for um número par efalse caso contrário. Agora, vamos verificar se funciona da maneira que deveria.

4. Testando o Método

Para o nosso exemplo, queremos verificar especificamente dois cenários:

  • quando dado um número par, o método deve retornartrue

  • quando dado um número ímpar, o método deve retornarfalse

Isso significa que o código de implementação chamará nosso métodoisNumberEven com parâmetros diferentes e verificará se o resultado é o que esperamos.

In order for the tests to be recognized as such, we’ll add the @Test annotation. Podemos ter quantos deles quisermos em uma aula, mas é uma boa prática reunir apenas os relacionados. Observe também quea test must not be private, nor may it return a value - caso contrário, será apenas ignorado.

Dadas essas considerações, vamos escrever nossos métodos de teste:

@Test
void givenEvenNumber_whenCheckingIsNumberEven_thenTrue() {
    boolean result = bean.isNumberEven(8);

    Assertions.assertTrue(result);
}

@Test
void givenOddNumber_whenCheckingIsNumberEven_thenFalse() {
    boolean result = bean.isNumberEven(3);

    Assertions.assertFalse(result);
}

Se agora executarmos uma compilação Maven,the surefire plugin will go through all the annotated methods in the classes placed under src/test/java and execute them, fazendo com que a compilação falhe se ocorrer alguma falha de teste.

Se você vier da JUnit 4,be aware that in this version the annotation doesn’t accept any parameters. Para verificar um tempo limite ou uma exceção lançada, usaríamos asserções em seu lugar:

@Test
void givenLowerThanTenNumber_whenCheckingIsNumberEven_thenResultUnderTenMillis() {
    Assertions.assertTimeout(Duration.ofMillis(10), () -> bean.isNumberEven(3));
}

@Test
void givenNull_whenCheckingIsNumberEven_thenNullPointerException() {
    Assertions.assertThrows(NullPointerException.class, () -> bean.isNumberEven(null));
}

5. Conclusão

Neste tutorial rápido, mostramos como implementar e executar um teste JUnit simples com a anotação@Test.

Mais sobre a estrutura JUnit pode ser encontrada emthis post, que fornece uma introdução geral.

Todo o código usado nos exemplos está disponível emGitHub project.