我有以下结构:
class Bar{
....
protected void restore(){
....
}
....
}
此类扩展Foo如下:
class Foo extends Bar{
....
@Override
public void restore(){ //valid override
super.restore();
....
}
}
在我的 jUnit 测试中,我想测试何时foo.restore()调用,super.restore()随后调用。因此,下面是我的 jUnit 测试方法:
class FooTest{
@Tested
Foo _foo;
@Test
void testRestore(final Bar bar){
new Expectations(){{
bar.restore(); times = 1; // Error! bar.restore() not visible
}};
Deencapsulation.invoke(_foo,"restore");
}
}
不幸的是,我的测试无法编译。原因是 1)restore()父级是protected和 2)FooTest并Foo一起存在于一个单独的项目(因此是文件夹)与Bar.
反正有没有达到预期的测试?我已经检查了jMockit 教程(在过去几个月中多次)并且没有看到类似的测试(在 Google 上搜索也是如此)。
更新
在回复的帮助下,我了解到强制调用子类super不是最佳实践,但这不是我的实现,我仍然需要对其进行测试。我仍在寻找一种方法来强制执行我的 jUnit 测试以检查对父级的调用是否正在发生。