【发布时间】:2015-11-04 17:43:11
【问题描述】:
如何正确抑制 Spy 上的父类方法?
如果我有一个班级家长:
public class Parent {
public void method() {
System.out.println("Parent.method");
}
}
class Child extends Parent {
@Override
public void method() {
super.method();
System.out.println("Child.method");
}
}
我使用以下代码进行测试:
@RunWith(PowerMockRunner.class)
@PrepareForTest(Parent.class)
public class SuppressParentTest {
@Spy Child child = new Child();
@Test
public void testSuppressSuperclassMethods() {
PowerMockito.suppress(methodsDeclaredIn(Parent.class));
child.method();
}
我从 System.out 得到以下打印输出:
Parent.method
Child.method
而我应该只得到Child.method 的打印输出。
有趣的是,如果我从 Child 对象的声明中删除 @Spy 注释,那么 Parent.method() 会被正确抑制。
我做错了吗?我是否误解了如何使用 PowerMock?
【问题讨论】:
标签: java mockito powermock powermockito