Olá,
O trecho abaixo é um teste que estou estudando na Aula 03.02 do curso de Testes. O Erro é o seguinte:
Quando eu digo para lançar uma excption, doThrow(), e passo o primeiro item da lista, leiloes.get(0), e no verify(), passo o 2 item da lista, leiloes.get(1), gera um erro do tipo:
Argument(s) are different! Wanted:
Falhando o teste.
Porém, quando faço uma inversão, no doThrow() passo o segundo item da lista, e no verify passo o primeiro, ele aceita e o teste executa com sucesso.
Penso que pelo fato de gerar a exceção no primeiro item, o segundo não funciona. Mas, existe um Try Catch no local correto e deveria pegar essa exceção, tratando-a, e seguindo o processamento normal.
Será que tenho algo errado no meu código?
trecho do código que tem o try catch:
for (Leilao leilao : todosLeiloesCorrentes) {
try {
if (comecouSemanaPassada(leilao)) {
leilao.encerra();
total++;
dao.atualiza(leilao);
carteiro.envia(leilao);
}
}catch (Exception e){
}
}
Classe de teste:
private List<Leilao> leiloes;
@Before
public void criarLeiloes() {
leiloes = new LinkedList<Leilao>();
Leilao leilao1;
Leilao leilao2;
Leilao leilao3;
Calendar antiga = Calendar.getInstance();
antiga.add(Calendar.DATE, -20);
Calendar hoje = Calendar.getInstance();
hoje.setTime(new Date());
Calendar aCincoDias = Calendar.getInstance();
aCincoDias.setTime(new Date());
aCincoDias.add(Calendar.DATE, -5);
leilao1 = new CriadorDeLeilao().para("Playstation 3 Novo").naData(antiga).constroi();
leilao2 = new CriadorDeLeilao().para("TV").naData(hoje).constroi();
leilao3 = new CriadorDeLeilao().para("Notebook").naData(aCincoDias).constroi();
leiloes.add(leilao1);
leiloes.add(leilao2);
leiloes.add(leilao3);
}
@Test
public void teste() {
LeilaoDao leilaoDao = mock(LeilaoDao.class);
EnviadorDeEmail carteiro = mock(EnviadorDeEmail.class);
when(leilaoDao.correntes()).thenReturn(leiloes);
doThrow(new RuntimeException()).when(leilaoDao).atualiza(leiloes.get(0));
EncerradorDeLeilao encerradorDeLeilao = new EncerradorDeLeilao(leilaoDao, carteiro);
encerradorDeLeilao.encerra();
verify(leilaoDao).atualiza(leiloes.get(1));
verify(carteiro).envia(leiloes.get(1));
}