Testando exceções com junit

Este artigo apresenta uma visão suscinta sobre testes de exceção com JUnit usando o idioma try/fail/catch, o parâmetro expected da anotação @Test e a anotação @Rule. Cada um dos métodos apresenta prós e contras.

Usando bloco try/catch

@Test
public void example1() {
    try {
        find("função que deveria lançar uma exceção");
        fail();
        // Ponto que nunca deveria ser alcançado quando o teste passar
    } catch (NotFoundException e) {
        assertThat(e.getMessage(), containsString("algo que indique que a exceção certa ocorreu"));
    }
    // ... Outras exceções podem ser tratadas aqui.
}

@Test (expected = Exception.class)

public void example2() throws NotFoundException {
    find("função que deveria lançar uma exceção");
    // Ponto que nunca deveria ser alcançado quando o teste passar
}

ExpectedException Rule

@Test
public void example3() throws NotFoundException {
    exception.expect(NotFoundException.class);
    exception.expectMessage(containsString("algo que indique que a exceção certa ocorreu"));
    find("função que deveria lançar uma exceção");
    // Ponto que nunca deveria ser alcançado quando o teste passar
}

Referências

comments powered by Disqus