Junit e testes mais complexos

:wink: e ai galera boa tarde!

Vamos la galera, ja implementei alguns testes unitários em minha carreira, alguns tive de usar reflection, outos usei mocks, outros DBunit isso juntamente com o JUnit que sempre uso.

porem sempre fiquei na duvida quando os métodos forem complexos com por exemplo:

desculpa pelo exemplo e que não to com nada mais palpavel na mente :
:oops:

[code]

public String fazalgo(int a){

if (a==1){

return this.chamaMetodoDaClasse(a);
}
else{
return new ClasseDoPacote.metodoQueNaoDeveriaSerTestado(a);
}

}[/code]

Assim ate aonde entendo os testes unitários deveriam se prender a apenas aos métodos que são testados, e não testar outros codigos assim certificando que o algoritmo funciona e mantendo a coerência, porem quando testo fazalgo , acabo testando metodoQueNaoDeveriaSerTestado , e tbm chamaMetodoDaClasse , como deveria ser o teste neste caso??? :roll:

É só fazer um mock retornando o que você espera de cada método, testando somente uma situação por método de teste.

Não entendi, o teste ficaria assim:

 

public void test_fazalgo_usando_1() {
		
   String retorno;	

   classeImplementada  instancia = new ClasseImplementada();

   instancia.fazalgo(1);
		
   assertEquals("Usou 1",retorno);
}



public void test_fazalgo_usando_outro_numero() {
		
   String retorno;	

   classeImplementada  instancia = new ClasseImplementada();

   instancia.fazalgo(55);
		
   assertEquals("Usou outro numero",retorno);
}

assim mas continuo perguntando como testo esse metodo sem testar chamaMetodoDaClasse ou ClasseDoPacote.metodoQueNaoDeveriaSerTestado
po favor se nao for pedir muito poderia colocar exempos ??? :roll:

só utilizei mock quando o metodo em questão usava como parâmetro objetos complexos.

UP! :stuck_out_tongue: