Mockito extension for JUnit 5を実装しています。ネストされたテストで、親テストクラスのモックを作成したいとします。JUnit 5ネストされたテストクラスから親テストのインスタンスを取得する方法
class RootTest{
@Mock Foo mock;
@Nested
class NestedTest{
@Test
public void foo(){
mock.bar();
}
}
}
我々は@Mock
でアノテートフィールドにモックを割り当てるためにRootTest
のインスタンスを必要とすることができません。 現在の問題は、RootTest
クラスのインスタンスを取得することです。最初の試みはExtensionContext.getParent()
とExtensionContext.getTestInstance()
で取得することでしたが、テストインスタンスは親に対してnull
です。
Q:ネストされたクラスの親インスタンスを取得するにはどうすればよいですか?リフレクションは助けになるかもしれませんが、オプションではなく、コンパイラに依存します。
mockito-strictnessを定義するために追加の注釈を処理するために 'BeforeEachCallback'を実装する必要があるので、コードはより複雑になりました。 'getTestInstance()'が将来のリリースで親の 'ExtensionContext'のテストインスタンスを返す可能性はありますか? – Chriss
'ExtensionContext'の親はあなたの例ではネストされたテストクラスを表し、' Lifecycle.PER_CLASS'を使うとテストインスタンスがセットされます。しかし、その場合、必要なものではないネストされたクラスのインスタンスが含まれます。 'ExtensionContext'に別のメソッドを追加して、すべての囲まれたインスタンス、または指定されたクラスリテラルの囲むインスタンスを取得できます。 GitHubの問題を作成して、そこで議論を続けることができますか? –