我在我的测试方法中有一个构造函数调用。我想模仿它,因为尝试启动UI。我也嘲笑了构造函数的输入,但它仍在尝试创建实际的实例。
生产代码:
public void methodToTest() {
SaveAsDialog sd = new SaveAsDialog(getSite().getShell());
sd.setOriginalFile(file);
sd.open()
}
测试代码:
Shell mockShell=Mockito.mock(Shell.class);
IEditorSite site = Mockito.mock(TestEditorSite.class);
Mockito.when(site.getShell()).thenReturn(mockShell);
SaveAsDialog dialogMock=Mockito.mock(SaveAsDialog.class);
PowerMockito.whenNew(SaveAsDialog.class).withArguments(site.getShell()).thenReturn(dialogMock);
我在这里遗漏了任何东西,当调用SaveAsDialog sd = new SaveAsDialog(getSite().getShell());
行时,它正在创建实际的实例。
我正在使用
运行我的测试@RunWith(PowerMockRunner.class)
@PrepareForTest({SaveAsDialog.class})
答案 0 :(得分:1)
您应该将SaveAsDialog
的实例作为构造函数参数传入您测试的类中。这将使用简单的Mockito模拟它很容易。
如果您想要屈服于糟糕的设计,您必须正确使用 PowerMock ,这意味着您还需要为测试而准备您的课程:
@PrepareForTest({SaveAsDialog.class,YourTestedClass.class})