Ao executar o teste
@Test
void naoDeveriaEnviarEmailParaVencedorDoLeilaoEmCasoDeErroAoFinalizarLeilao() {
List<Leilao> leiloes = this.leiloes();
Mockito.when(this.leilaoDao.buscarLeiloesExpirados()).thenReturn(leiloes);
Mockito.when(this.leilaoDao.salvar(Mockito.any())).thenThrow(RuntimeException.class);
try {
this.service.finalizarLeiloesExpirados();
Mockito.verifyNoInteractions(this.enviadorDeEmails);
} catch (Exception e) { }
}
A linha Mockito.verifyNoInteractions(this.enviadorDeEmails); não é executada quando o Mockito lança a exceção no método salvar. O teste passa, mas sem efetivamente testar a "não interação", pois a execução pula para o "catch". O correto me parece ser colocar a linha Mockito.verifyNoInteractions(this.enviadorDeEmails); após o try/catch ou num finally. Caso algum DEV coloque o envio de e-mail ANTES do método salvar, o teste ainda sim passará, mas o bug ocorrerá pois o teste está com esta falha. Está correto este raciocínio?