gpt4 book ai didi

java - 绕过 Mockito 中的静态方法

转载 作者:行者123 更新时间:2023-12-05 06:56:46 30 4
gpt4 key购买 nike

我正在使用 Mockito 编写一个 JUnit 测试用例,我试图绕过我的测试方法中的静态方法调用。运行测试用例时出现 NullPointerException

是否有任何方法可以在不使用 PowerMockito 的情况下绕过上述调用,或者在下面提到的方法中需要进行哪些修复?

下面是有助于您理解问题的代码片段:

=> 这是我的代码,我想使用 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

的片段
  class MyTestClass{
public void test_methodToTest(){
JsonObject dummy_jsonObject = new JsonObject().put("foo","foo");
doReturn(dummy_jsonObject).when(MyUtilClass.staticMethod(any()));
}
}

最佳答案

如果你想用 Mockito(需要 3.4.0 或更高版本)从 MyUtilClass 模拟你的 staticMethod, stub 看起来像下面这样(我假设你使用Java 版本 > 9):

@Test
void shouldMockStatic() {
JsonObject dummy_jsonObject = new JsonObject().put("foo","foo");
try (MockedStatic<MyUtilsClass> mockedStatic = Mockito.mockStatic(MyUtilsClass.class)) {
mockedStatic.when(() -> MyUtilsClass.staticMethod(anyString()).thenReturn(dummy_jsonObject);

// now invoke your class under test
}
}

您可以找到有关 Mockito 此功能的更多信息和示例 here .

关于java - 绕过 Mockito 中的静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65064543/

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