我有以下结构:
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 测试以检查对父级的调用是否正在发生。