Objeto mockado null ao fazer um doNothing().when em um teste Junit com Mockito

Olá pessoal, venho hoje pedir ajuda de vocês com a questão abaixo e quem sabe gerar material para quem enfrentar o mesmo erro no futuro porque até agora não achei nada no Google que ajude.

Estou tentando testar uma classe usando JUnit e Mockito.

Eis a classe que está sendo testada:

public class ClasseQueEstaSendoTestada {
      private final ExemploInterfaceRepository exemploInterfaceRepository;

      private TipoDeRetorno metodoQueEstaSendoTestado(ObjetoQueSeraPersistido objetoQueSeraPersistido) {
            exemploInterfaceRepository.save(objetoQueSeraPersistido);
      }
}

Agora, eis a classe de teste que está testando a classe acima:

public class ClasseDeTeste {
      @InjectMocks
      private ClasseQueEstaSendoTestada classeQueEstaSendoTestada;

      @Mock
      private ExemploInterfaceRepository exemploInterfaceRepository;

      @BeforeEach
      private setUp() {
            MockitoAnnotations.initMock(this);
      }

      @Test
      public void devePersistirObjetoQueSeraPersistido() {
            ObjetoQueSeraPersistido objetoQueSeraPersistido = new ObjetoQueSeraPersistido();

            doNothing().when(exemploInterfaceRepository).save(any());

            classeQueEstaSendoTestada.metodoQueEstaSendoTestado(objetoQueSeraPersistido)
      }
}

O problema é o seguinte, o exemploInterfaceRepository no trecho abaixo está null e com isso estou recebendo uma NullPointerException.

doNothing().when(exemploInterfaceRepository).save(any());

Pelo que entendi o mock de exemploInterfaceRepository não está funcionando, mas não consegui entender o porque. Se alguém puder me ajudar eu ficaria muito grato :wink:

Desde já agradeço!

Consegui solucionar da seguinte forma:

Adicionei a essa anotação @RunWith(MockitoJUnitRunner.class) no início da classe de teste e removi o doNothing, então ficou assim:

when(exemploInterfaceRepository.save(any())).thenReturn(objetoQueSeraPersistido);
1 curtida