【发布时间】:2019-09-18 22:01:59
【问题描述】:
我试图模拟一种静态 void 方法,我尝试了 PowerMock 但总是得到 NullPointer 异常。
我们正在尝试模拟以下调用 -
public Class XYZ{
public void method1(){
....
SampleClass.methodTypeStatic1().methodTypeStatic2("xyz", "mno", classVeriable);
}
主类是-
public class SampleClass implements SampleClassParent{
private static SampleClass var1;
public static SampleClass methodTypeStatic1(){
if (var1 == null) {
//Do something on var1
}
return var1;
}
public void methodTypeStatic2(String localVar1, String localVar2, DifferentStaticClass localVar3) {
//Do something
}}
我试图在我的测试类中以这种方式模拟调用 -
@RunWith(PowerMockRunner.class)
@PrepareForTest({SampleClass.class})
public class XYZTest{
@InjectMocks
XYZ xyzTestService;
@Test
public void testMethod1(){
...
PowerMockito.mockStatic(SampleClass.class);
PowerMockito.doNothing().when(SampleClass.methodTypeStatic1());
xyzTestService.method1();
}
还要提到 SampleClass.class 不是我们代码的一部分,我们已经将这个外部类导入到我们的代码库中以执行一些任务。
【问题讨论】:
-
请添加完整的 UnitTest 和相关的堆栈跟踪。
-
问题已按要求更新。
-
您添加的不是完整且可运行的单元测试。你使用什么注释?
-
用@PrepareforTest(SampleClass.class) 注释测试类然后尝试
-
还有一件事是 methodTypeStatic1 不是 void,你不应该在非 void 方法上使用 doNothing。
标签: java spring-boot mockito powermockito springmockito