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