public void testTesteNoCoinsException(){
try{
teste(0,2);
assertTrue("devia ter lançado exception",false);
}catch(Exception e){
assertTrue("Nao disparou uma NoCoinsException",e instanceof NoCoinsException);
}
}
public void testTesteNoCoinsException(){
try{
teste(0,2);
assertTrue("devia ter lançado exception",false);
}catch(Exception e){
assertTrue("Nao disparou uma NoCoinsException",e instanceof NoCoinsException);
}
}[/quote]
cara vc não faz isso faz?
se vc usa as annotations do JUnit é bem simples
@Test(expected=ExececaoEsperada.class)
public void testAlgoumaCoisa(){
//Bla bla
//Não precisa ter um assert Aqui
}
pronto, se ocorrer a execessão na execução ta tudo certo, o teste passa
Opa, faço, mas não exatamente p/ pegar uma classe de exception, faço p/ pegar um getMessage específico…
Gostei dessa annotation, eu não sabia q existia, muito bom
Aproveitando: e se eu tenho uma Exception genérica e gostaria de testar um erro específico nela?
Por exemplo:
Tenho um StatementException que pode encapsular tanto uma SQLException qto uma ReferenceException.
O melhor p/ testar nesse caso deveria ser isso?
@Test(expected=ReferenceException.class)
public void testAlgoumaCoisa(){
try{
//Bla bla
//Não precisa ter um assert Aqui
}catch(StatementException e){
throw e.getCause();
}
}
Além disso, há alguma dica p/ testar um getMessage específico no caso de uma SQLException, q contém msgs diferentes de acordo com o erro? Atualmente uso o esquema que eu postei levemente modificado:
public void testTesteNoCoinsException(){
try{
teste(0,2);
assertTrue("devia ter lançado exception",false);
}catch(Exception e){
assertTrue(e.getCause().getMessage().matches("Não foram encontradas referências entre os joins .* e .*"));
}
}
Se está utilizando o JUnit 4 tem o esquema do @Test(expected que o Felagund.
Porém se você quer verificar exatamente a mensagem da exception, como o disse o barenko, você pode usar a solução que ele postou. Eu só mudaria uma coisa, ao invés de colocar: