Vamos reescrever o teste...
O teste atual está escrito como:
Triangulo t3 = new Triangulo (2,3,-4);
assert (false == t3.éEquilátero()) :"NÃO é equilátero o triângulo (2,3,-4)";
e isso derruba o software, pois o cliente (nossa classe de testes) não respeita o contrato.
O que deveríamos realmente testar era:
"Se for feita tentativa de criar triangulo com algum lado negativo, deve ser gerada uma exceção com a mensagem ' Lados devem ter valores positivos' "
Como testar isso? Capturando o AssertionError gerado pelo triangulo:
try {
t = new Triangulo(2, 3, -4);
} catch (AssertionError ae) {
assert (ae.getMessage().equals("Lados devem ter valores positivos"));
}
Nosso código de Testes agora ficou assim:
Como testar isso? Capturando o AssertionError gerado pelo triangulo:
//Criado em 14/04/2005
package TrianguloTDD;
//Última modificação 14/04/2005 fernando
public class Testar_Triangulo {
public static void main(String argumento[]) {
Triangulo t = new Triangulo(2, 3, 4);
assert (t.éEscaleno()) : "O triangulo (2,3,4) é escaleno";
Triangulo t1 = new Triangulo(2, 2, 2);
assert (t1.éEquilátero()) : "O triangulo (2,2,2) é equilátero";
assert (t1.éIsósceles()) : "O triangulo (2,2,2) é isósceles";
assert (false == t.éIsósceles()) : "NÃO é isósceles o triângulo (2,3,4)";
Triangulo t2 = new Triangulo(4, 4, 7);
assert (t2.éIsósceles()) : "é isósceles o triângulo (4,4,7)";
assert (false == t2.éEquilátero()) : "NÃO é equilátero o triângulo (4,4,7)";
assert (false == t2.éEscaleno()) : "NÃO é escaleno o triângulo (4,4,7)";
try {
t = new Triangulo(2, 3, -4);
} catch (AssertionError ae) {
assert (ae.getMessage().equals("Lados devem ter valores positivos"));
}
try {
t = new Triangulo(2, 3, 100);
} catch (AssertionError ae) {
assert (ae.getMessage().equals("Violadas as Desigualdades Triangulares"));
}
System.out.println("OK");
}
}
|