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(空);->在DisplayConfigurationTest.setFrame_Icon_sshouldSetWindowIcon(DisplayConfigurationTest.java)
然而,这个mock还有其他交互:displayMock.setImage(空);->DisplayConfigurationTest.setFrame_Icon_sshouldSetWindowIcon(DisplayConfigurationTest.java)
当@Mock
一个对象时,该对象的方法实际上停止工作。然后,您可以告诉mock在调用任何方法(包括callRealMethod()
)时应该发生什么。因此,在您的示例中,您可以检查是否调用了setImage()
1次,但不会调用setIconImage()
。
您实际想要的是一个真正的Display
(或DisplayConfiguration
-从您的代码中不清楚),其中所有成员对象都是@Mock
ed。
或者,在当前代码中,您可以将其添加为测试方法的第一行:
when(displayMock.setImage(any())).thenCallRealMethod();