我只想模拟类中的一个静态方法,所有其他方法都应该像真实对象一样工作。
代码:
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/