【发布时间】:2017-12-14 14:03:50
【问题描述】:
假设我有两个班级 A 和 B。
Class A{
public String methodA(String name) {
B b = new B();
b.methodB(name);
}
}
Class B{
public String methodB(String name) {
return name+name;
}
}
现在我想模拟具有对 B 类的嵌套方法调用的 methodA。我尝试编写下面的 TestCase 但得到 methodNotImplementedException。
@Test
public void testCase() {
A a = new A();
B b = PowerMock.createPartialMock(B.class, "methodB");
EasyMock.expect(b.methodB(anyString())).andReturn("HELLO PTR");
PowerMock.replayAll();
String result = a.methodA("hello ptr");
assertEquals(result, "HELLO PTRHELLO PTR");
PowerMock.verifyAll();
}
谁能告诉如何使用 PowerMock 解决嵌套方法调用..?? 提前感谢
【问题讨论】:
-
什么是嵌套方法?
-
你用的是power mock和easy mock??
-
现在我想模拟 methodA - 如果 methodA() 被模拟,那么就没有必要模拟 b.methodB()。
-
可以使用多个测试框架,但简单的 mock 很糟糕。我建议在你的项目中使用 Powermock 和 mockito。使用 powermock 模拟新对象的创建以及模拟静态和最终方法。使用 mockito 处理其他所有内容。
标签: java unit-testing junit4 powermock easymock