Falha no test de exceção JUnit

3 respostas
java
A

Fala pessoal, preciso de uma ajuda aqui, já tentei de várias formas pesquisei por aí mais não consigo fazer meu teste funcionar.

classe a ser testada:

public class FiltroConsultaAusencia{

    public void validar(Grupo dados, Servicos servico){

     if((Se dois campos forem diferentes de vazio)){

		throws new Erro("lança erro") //Erro extends RuntimeException
		}
    }
}

Classe de test:

@Category(UnitTest.class)
public class FiltroConsultaAusenciaTest extends TesteCase{

@Test(expected=Erro.class)
public void testValidar()throws Exception{

 filtroConsulta filtro = new filtroConsulta();

 filtro.validar(dados, servico)
}
}

ao executar "mvn test " o teste até executa mais quando comento a linha throws new Erro(“lança erro”) ou seja quando não lanço exceção o teste deveria dar erro, mais ele passa direto.

3 Respostas

I

Pq vc da throws no test ? Caso der exception ele vai delegar essa exception pra alguém (que nem existe) e esse cara vai se recuperar do erro ?
Ele nem deveria jogar isso pra alguém, seu test é a última camada.
Conceitualmente vc faz o uso o throws para isso.
Lança uma RuntimeException na seu método valida (Ou cria uma exception) e da um (throw (não throws) new RuntimeException(“Erro”));

A

Havia dado throws no testValidar() pq o método validar() exigia pois retorna uma exceção.

Acabei digitando errado eu criei throw e não throws aqui no meu código

Erro() já extend de RumTimeException então acredito que fazer Throw new Erro() não tem problema;

Fiz diferente:

public class FiltroConsultaAusencia{

public void validar(Grupo dados, Servicos servico)throws Exception{

 if((Se dois campos forem diferentes de vazio)){

	throws new Erro("lança erro") //Erro extends RuntimeException
	}
}

}
Classe de test:

@Category(UnitTest.class)
public class FiltroConsultaAusenciaTest extends TesteCase{

@Test(expected=Exeption.class)
public void testValidar(){

filtroConsulta filtro = new filtroConsulta();

try{

filtro.validar(dados, servico)

}

catch(Exception e){

System.out.println(e);

}

}

}

Qndo roda os teste ele falha:

Tests run: 1 Failures java.lang.AssertionError: Expected exception: java.langException

I

Se der erro no seu método validar, quem chamar ele pode se recuperar do erro ?

Criado 27 de julho de 2016
Ultima resposta 28 de jul. de 2016
Respostas 3
Participantes 2