假设有类如下:
public class MyClass {
public void publicMethod() {
......
String result = privateMethod();
......
}
private String privateMethod() {
......
}
}
对MyClass进行单元测试,测试publicMethod的时候可能需要对privateMethod进行mock,可以使用PowerMockito进行:
@RunWith(PowerMockRunner.class)
@PrepareForTest({MyClass.class})
public class MyClassTest {
......
@Test
public void test() {
MyClass myClass = PowerMockito.spy(new MyClass());
PowerMockito.doReturn("mockedResult").when(myClass, "privateMethod");
......
myClass .publicMethod();
......
}
}
几个关键点:
- @RunWith(PowerMockRunner.class)
- @PrepareForTest({MyClass.class})
- MyClass myClass = PowerMockito.spy(new MyClass())
- PowerMockito.doReturn(“mockedResult”).when(myClass, “privateMethod”);