gpt4 book ai didi

java - Powermock - 尝试模拟方法实际上调用方法

转载 作者:行者123 更新时间:2023-12-02 10:48:07 27 4
gpt4 key购买 nike

我有一个带有静态方法的简单类,该方法通常会抛出空指针:

public class MyClass {
private static String s;

public static final int myMethod(){
return s.length();
}
}

我尝试使用 PowerMock 模拟这个静态方法,如下所示:

import static org.mockito.Mockito.when;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

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

public class MyClassTest {
@Test
public void test() {
PowerMockito.mock(MyClass.class);
when(MyClass.myMethod()).thenReturn(3);
System.out.println(MyClass.myMethod());
}
}

但结果是:

java.lang.NullPointerException
at MyClass.myMethod(MyClass.java:6)
at MyClassTest.test(MyClassTest.java:20)

所以看来当我试图模拟它时实际的方法被调用了。为什么会发生这种情况?

最佳答案

问题是我需要使用 PowerMockito.mockStatic 而不是 PowerMockito.mock。

关于java - Powermock - 尝试模拟方法实际上调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52390015/

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