gst*_*low 3 java unit-testing mockito powermock stubbing
我想在类中只模拟一个静态方法,所有其他方法应该像真实对象一样工作.
码:
public class ArrTest {
public static int myMethod (int arr []) {
return 777;
}
}
Run Code Online (Sandbox Code Playgroud)
测试这种方法:
public class ArrTestTest {
@Test
public void myMethodTest(){
PowerMockito.stub(PowerMockito.method(ArrTest.class, "myMethod")).toReturn(0);
System.out.println(ArrTest.myMethod(null));
}
}
Run Code Online (Sandbox Code Playgroud)
在输出中我看到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));
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
要在注释中解决后续问题 - 如果您已经有测试运行器且无法使用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));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6179 次 |
| 最近记录: |