Avatar ·

Como verificar que um método não foi chamado com Mockito?

Olá! Estou escrevendo testes unitários para uma aplicação Java usando JUnit e Mockito. Tenho um serviço que, sob certas condições, não deve chamar um método de um objeto dependente. Por exemplo, se o usuário não estiver autenticado, o método sendEmail() não deve ser chamado. Como posso verificar isso no teste?

Aqui está um exemplo simplificado do meu código:

public class NotificationService {
    private EmailService emailService;

    public NotificationService(EmailService emailService) {
        this.emailService = emailService;
    }

    public void processUser(User user) {
        if (user.isActive()) {
            emailService.sendEmail(user.getEmail(), "Welcome!");
        }
    }
}

Escrevi um teste para o caso em que o usuário está ativo — lá verifico que sendEmail() foi chamado com verify(emailService).sendEmail(...). Mas como escrever um teste para o caso em que o usuário NÃO está ativo (por exemplo, use)?