【发布时间】:2015-02-20 20:59:07
【问题描述】:
试图让 PowerMockito 在这里使用 RoboElectric 在 android 上进行单元测试。我想在测试中调用公共方法并验证某些行为,但我想更改该类中私有方法的响应。此示例:
public class TestPrivate {
public String doTest() {
return test();
}
private String test() {
return "FOO";
}
}
我想运行一个名为 doTest 的测试,但使用 PowerMockito 来更改 test() 返回的内容。我在下面的尝试不起作用,当我希望我的测试返回“BAR”时,test() 返回“FOO”
@RunWith(RobolectricTestRunner.class)
@PrepareForTest(TestPrivate.class)
public class WebSocketClientTest extends TestCase {
@Test
public void testConnect() throws Exception {
TestPrivate spy = PowerMockito.spy(new TestPrivate());
doReturn("BAR").when(spy, method(TestPrivate.class, "test"));
String response = spy.doTest();
assertEquals("BAR", response);
}
}
几件事:
在 PowerMockito 1.6 中使用 RoboElectric Test Runner 似乎没问题
这是我的 gradle 导入
androidTestCompile 'junit:junit:4.11'
androidTestCompile 'org.robolectric:robolectric:2.4'
androidTestCompile 'org.powermock:powermock-mockito-release-full:1.6.0'
提前致谢,还有其他关于此的帖子,但没有一个有效,而且已经有多年历史了。
【问题讨论】:
标签: java junit mockito powermock