假设有类如下:
public class MyClass {
public void publicMethod() {
......
String result = MyStaticClass.staticMethod();
......
}
}
public class MyStaticClass{
public static String staticMethod(String arg) {
......
}
}
对MyClass进行单元测试,测试publicMethod的时候可能需要对MyStaticClass.staticMethod进行mock,可以使用PowerMockito进行:
@RunWith(PowerMockRunner.class)
@PrepareForTest({MyStaticClass.class})
public class MyClassTest {
......
@Test
public void test() {
mockStatic(MyStaticClass.class);
when(MyStaticClass.staticMethod()).thenReturn("mockedResult");
......
myClass .publicMethod();
......
}
}
mockStatic和spy的区别:
mockStatic是对整个类做mock,如果没有指定mock的行为(比如通过when…thenReturn方式定义),则默认该方法为空。
spy则是对指定的方法进行mock,如果没有指定mock的行为,则默认为原有实现。