Java PowerMockito.whenNew未创建模拟,实际实例已创建

Java PowerMockito.whenNew未创建模拟,实际实例已创建,java,unit-testing,powermock,Java,Unit Testing,Powermock,我在测试中的方法中有一个构造函数调用。我想模拟它,因为它试图启动UI。我也模拟了构造函数的输入,但它仍然试图创建实际的实例 生产代码: 测试代码: 当saveasdialogsd=newsaveasdialoggetsite.getShell时,我是否遗漏了任何东西;这条线被称为它正在创建实际的实例 我正在用计算机运行我的测试 @RunWith(PowerMockRunner.class) @PrepareForTest({SaveAsDialog.class}) 您应该将SaveAsDial

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

生产代码:

测试代码:

当saveasdialogsd=newsaveasdialoggetsite.getShell时,我是否遗漏了任何东西;这条线被称为它正在创建实际的实例

我正在用计算机运行我的测试

@RunWith(PowerMockRunner.class)
@PrepareForTest({SaveAsDialog.class})

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

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

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

谢谢你,蒂莫西·特鲁克尔。成功了。这是遗留代码,我无法更改。
@RunWith(PowerMockRunner.class)
@PrepareForTest({SaveAsDialog.class})
@PrepareForTest({SaveAsDialog.class,YourTestedClass.class})