gpt4 book ai didi

java - PowerMockito.whenNew 未创建模拟实际实例

转载 作者:行者123 更新时间:2023-12-02 12:09:22 25 4
gpt4 key购买 nike

我的测试方法中有一个构造函数调用。我想模拟它,因为尝试启动一个用户界面。我也模拟了构造函数的输入,但它仍然试图创建实际实例。

生产代码:

  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})

最佳答案

您应该将 SaveAsDialog 实例作为构造函数参数传递到正在测试的类中。这将使使用普通的 Mockito 来模拟它变得非常容易。

<小时/>

如果你宁愿屈服于糟糕的设计,你必须正确使用PowerMock,这意味着你还必须准备你的类来进行模拟测试:

@PrepareForTest({SaveAsDialog.class,YourTestedClass.class})

关于java - PowerMockito.whenNew 未创建模拟实际实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46663322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com