class Display extends JFrame{
public void setImage(Image image) {
this.setIconImage(image);
}
}
测试
public class DisplayConfigurationTest {
@Mock
private DisplayConfiguration displayMock;
@Test
public void setFrame_Icon_shouldSetWindowIcon() throws Exception {
displayMock.setImage(null);
verify(displayMock, times(1)).setIconImage(null);
}
}
测试抛出错误:
想要但不被调用: displayMock.setIconImage(null); ->在DisplayConfigurationTest.setFrame_Icon_shouldSetWindowIcon(DisplayConfigurationTest.java)
但是,此模拟还有其他交互作用: displayMock.setImage(null); -> DisplayConfigurationTest.setFrame_Icon_shouldSetWindowIcon(DisplayConfigurationTest.java)
答案 0 :(得分:0)
@Mock
对象时,该对象的方法有效地停止工作。然后,您可以告诉模拟程序调用任何方法(包括callRealMethod()
)时应该发生什么。因此,在您的示例中,您可以检查setImage()
是否被调用过1次,但是setIconImage()
不会被调用。
您真正想要的是一个 real Display
(或DisplayConfiguration
-您的代码尚不清楚),其中所有成员对象都@Mock
或者,在当前代码中,您可以将其添加为测试方法的第一行:
when(displayMock.setImage(any())).thenCallRealMethod();