私は次の構造を持っています:
class Bar{
....
protected void restore(){
....
}
....
}
このクラスは次のように拡張さFoo
れます。
class Foo extends Bar{
....
@Override
public void restore(){ //valid override
super.restore();
....
}
}
foo.restore()
私のjUnitテストでは、が呼び出されると、その後にが呼び出されることをテストしたいと思い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テストを実施する方法をまだ探しています。