lançar RuntimeException ao invocar o método de desbloqueio

Eu estou usando mockito. Eu quero jogar RuntimeException quando o método desmontado é chamado. Há alguma maneira de fazer isso?

Você pode definir uma resposta padrão para uma simulação. Todos os methods que não são stubbed usarão essa resposta padrão.

 public void testUnstubbedException() { // Create a mock with all methods throwing a RuntimeException by default SomeClass someClass = mock( SomeClass .class, new RuntimeExceptionAnswer() ); doReturn(1).when(someClass).getId(); // Must use doReturn int id = someClass.getId(); // Will return 1 someClass.unstubbedMethod(); // Will throw RuntimeException } public static class RuntimeExceptionAnswer implements Answer { public Object answer( InvocationOnMock invocation ) throws Throwable { throw new RuntimeException ( invocation.getMethod().getName() + " is not stubbed" ); } } 

Note que você não pode usar when com esta funcionalidade, já que o método é chamado antes de when ( como a invocação mockito when () funciona? ) E lançará uma RuntimeException antes que a simulação entre no modo stub.

Portanto, você deve usar o doReturn para que isso funcione.

A melhor maneira de fazer isso é com os methods estáticos ignoreStubs e ignoreStubs . Chame-os após a parte “ato” do seu teste; e você terá uma falha se quaisquer methods não stellados forem chamados, mas não verificados.

 verifyNoMoreInteractions(ignoreStubs(myMock)); 

Isso é descrito em https://static.javadoc.io/org.mockito/mockito-core/2.8.47/org/mockito/Mockito.html#ignore_stubs_verification, embora eu acredite que o exemplo de código contenha atualmente um erro de impressão.

Você zomba de uma class inteira e o resultado é que todos os methods retornarão nulo.

Então você pode usar doReturn(...) para mudar esse comportamento. Da mesma forma, você pode usar doThrow(...) para fazer (como lembro-me apenas void ) methods lançar exceções.

Isso responde à sua pergunta?