gpt4 book ai didi

java - PowerMockito。模拟静态方法。为什么 PowerMockito#stub 不起作用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:46:57 27 4
gpt4 key购买 nike

我只想模拟类中的一个静态方法,所有其他方法都应该像真实对象一样工作。

代码:

public class ArrTest {

public static int myMethod (int arr []) {
return 777;
}
}

测试此方法:

public class ArrTestTest {
@Test
public void myMethodTest(){
PowerMockito.stub(PowerMockito.method(ArrTest.class, "myMethod")).toReturn(0);
System.out.println(ArrTest.myMethod(null));
}
}

在输出中我看到 777 但我想看到 0;

我做错了什么?

最佳答案

您的方法是正确的,但是您缺少使 PowerMockito 检测类并使用适当的测试运行程序的注释:

@PrepareForTest(ArrTest.class)
@RunWith(PowerMockRunner.class)
public class ArrTestTest {
@Test
public void myMethodTest(){
PowerMockito.stub(PowerMockito.method(ArrTest.class, "myMethod")).toReturn(0);
System.out.println(ArrTest.myMethod(null));
}
}

编辑:

要解决评论中的后续问题 - 如果您已经有一个测试运行器并且不能使用 PowerMockRunner,您可以使用 PowerMockRule 来获得相同的结果:

@PrepareForTest(ArrTest.class)
public class ArrTestTest {

@Rule
public PowerMockRule rule = new PowerMockRule();

@Test
public void myMethodTest(){
PowerMockito.stub(PowerMockito.method(ArrTest.class, "myMethod")).toReturn(0);
System.out.println(ArrTest.myMethod(null));
}
}

关于java - PowerMockito。模拟静态方法。为什么 PowerMockito#stub 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23604528/

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