有没有Tom使用Powermock模拟一个类中的超级方法调用?
例如:
public void processRetrievedData() {
super.processRetrievedData();
}
无论如何都要模拟“super.processRetrievedData()”?
谢谢,
Rajan的
答案 0 :(得分:0)
这是一个可怕的想法和一个肮脏的黑客。
如果这是你考试对象的一部分,那么你永远不应该做这样的事情,因为你正在测试整个班级的行为而不仅仅是其中的一部分。
如果你真的需要做类似的事情,你可以扩展类并覆盖processRetrievedData方法,这样它就不会调用super - 就像你存根那个方法一样。
答案 1 :(得分:0)
虽然这是不好的做法,但有时候当你在没有选择的环境中工作时,你需要模拟继承。例如,我需要在Android中的Dialog Fragment中模拟超类方法来隔离我的单元测试。在您的情况下,在您的测试中使用......
@PrepareForTest(ChildClass.class)
public class ChildClassTest {
@Test
public void testMethod() {
PowerMockito.suppress(PowerMockito.method(SuperClass.class, "processRetrievedData"))
// Run method and test
}
}
在MemberMatcher类下的API中列出了其他重载方法,这些方法在其他情况下很有用,例如,方法有参数,还有其他继承方法等。希望有所帮助。