我想在类中只模拟一个静态方法,所有其他方法应该像真实对象一样工作。
代码:
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;
我错了什么?
答案 0 :(得分:5)
您的方法是正确的,但是您缺少注释以使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));
}
}