JUnit - Como tratar as falhas?

1 resposta
A

O que diriam desta classe, o objetivo é caso o teste falhe então é preciso tratar a mensagem de erro.

public class Testes {

	@org.junit.Test
	public void testaSoma(){
		try {
			sum();
		} catch (Error e) {
			System.err.println("Não é null!");
		}
	}
	
	public void sum() throws Error
	{
		System.out.println("Test...");
		//Assert.assertEquals(4, 5);
		//Assert.assertTrue(true);
	
		Object object = null;
		junit.framework.Assert.assertNotNull(object);
		//Assert.assertSame("André", "Andre");
		//Assert.assertFalse(false, "mensagem");
		//Assert.assertNull(null);
		//Assert.assertNotSame("d", "dd");

	}
}

1 Resposta

M

Você quer validar se a exceção lançada é a que você estava esperando, certo?

Quando algo deve falhar você faz a chamada ao método cujo resultado esperado é a falha e logo abaixo dele chama o método fail(), do JUnit. no catch, você faz um assertEquals para ver se a sua exceção é mesmo a que você está esperando.

Existe uma outra forma de você testar se o seu método lança uma determinada exceção, na anotação Test você atribui a exceção esperada para a propriedade expected. Algo assim:

@Test(expected = IllegalArgumentException.class)
public void meuTeste() {
//código
}

Só vale perceber que esse método valida qualquer exceção que seja igual a classe informada, não necessariamente a exceção que você estava esperando. Se você olhar o exemplo, ele espera uma IllegalArgumentException, o que é lançada por diversos métodos em diversas APIs. Seu teste pode indicar que seu código está funcionando corretamente quando na verdade foi lançada uma outra IllegalArgumentException que não era a que você esperava.

Sempre dê preferência para a primeira alternativa, pois ela valida a mensagem que está retornando. Em casos onde você tem uma exceção específica talvez o segundo caso se aplique, mas não o utilize como padrão.

Criado 20 de abril de 2011
Ultima resposta 20 de abr. de 2011
Respostas 1
Participantes 2