Java 创建时,为什么在Mockito.when内调用方法?
方法DefaultMessageListenerContainer.isRunning()在Mockito.doReturn(..).when()声明中调用。为什么?Java 创建时,为什么在Mockito.when内调用方法?,java,junit,mockito,Java,Junit,Mockito,方法DefaultMessageListenerContainer.isRunning()在Mockito.doReturn(..).when()声明中调用。为什么? @Test public void isRunning_validParams_isOk() { DefaultMessageListenerContainer mockMessageListenerContainer = Mockito.mock(DefaultMessageListenerContainer.class
@Test
public void isRunning_validParams_isOk() {
DefaultMessageListenerContainer mockMessageListenerContainer = Mockito.mock(DefaultMessageListenerContainer.class);
List<DefaultMessageListenerContainer> internalState = Arrays.asList();
Whitebox.setInternalState(this.theService, "jmsListeners", internalState);
try {
Mockito
.doReturn(true)
.doReturn(false)
.when(mockMessageListenerContainer.isRunning());
} catch (Exception e) {
e.printStackTrace();
Assert.fail("unexpected exception");
}
internalState.add(mockMessageListenerContainer);
boolean result1 = this.theService.isRunning();
Assert.assertTrue(result1);
boolean result2 = this.theService.isRunning();
Assert.assertFalse(result2);
}
@测试
公共无效正在运行_validParams_isOk(){
DefaultMessageListenerContainer mockMessageListenerContainer=Mockito.mock(DefaultMessageListenerContainer.class);
List internalState=Arrays.asList();
setInternalState(this.theService,“jmsListeners”,internalState);
试一试{
莫基托
doReturn先生(对)
doReturn先生(错)
.when(mockMessageListenerContainer.isRunning());
}捕获(例外e){
e、 printStackTrace();
Assert.fail(“意外异常”);
}
添加(mockMessageListenerContainer);
布尔结果1=this.theService.isRunning();
Assert.assertTrue(result1);
布尔结果2=this.theService.isRunning();
Assert.assertFalse(result2);
}
您的代码应更改为:
.doReturn(false)
.when(mockMessageListenerContainer).isRunning();
当使用
doReturn
时,当
方法需要一个模拟对象时,中的更多信息问题可能与“isRunning”方法声明为final这一事实有关,更改如下:{Mockito.doReturn(false).When(mockMessageListenerContainer).isRunning()}catch(异常e){e.printStackTrace();Assert.fail(“意外异常”);},错误一直存在:org.springframework.jms.listener.AbstractJmsListeningContainer.isRunning(AbstractJmsListeningContainer.java:347)处的java.lang.NullPointerException位于com…..正在运行有效参数(returnerjmsservicebist.java:94)