【发布时间】:2020-11-29 19:58:18
【问题描述】:
我正在使用 Mockito 编写 JUnit 测试用例,并试图绕过我的测试方法中的静态方法调用。我在运行测试用例时收到了NullPointerException。
是否有任何方法可以绕过上述调用而不使用PowerMockito 或者在下面提到的方法中需要哪些修复?
下面是帮助你理解问题的代码sn-ps:
=>这是我想使用 Mockito 编写 JUnit 测试用例的代码。
class MyClassToTest{
public void methodToTest(){
JsonObject obj = MyUtilClass.staticMethod(arg1);
}
}
=>下面是MyUtilClass的定义:
class MyUtilClass{
public static JsonObject staticMethod(JsonObject arg1){
//use arg1 to populate return object
return jsonobject;
}
}
=>下面是我当前的测试类和测试方法如何查找MyClassToTest.methodToTest的sn-p
class MyTestClass{
public void test_methodToTest(){
JsonObject dummy_jsonObject = new JsonObject().put("foo","foo");
doReturn(dummy_jsonObject).when(MyUtilClass.staticMethod(any()));
}
}
【问题讨论】:
-
你能在
MyTestClass测试套件中模拟arg1变量吗? -
"有没有什么方法可以绕过上面提到的调用而不使用
PowerMockito或者在下面提到的方法中需要什么修复?" - 由于 v3.4.0 @987654321 @ -
@marcin.programuje,不,
arg1无法模拟,因为它是一个巨大的 Json 有效负载。 -
如果您可以更改测试代码,最简单的解决方案是将静态方法的调用移动到自己的方法中(例如,使用包范围)并简单地存根此方法。
-
@Coder3108 huge 没有真正准确的含义。也许您应该尝试模拟它而不是模拟静态方法。
标签: java junit mockito static-methods