2

タイトルは非常に具体的だと思うが、私がやっていることのいくつかの文脈を共有する。カスタムSpring TestExecutionListenerの内部に依存関係を注入できますか?

私は、TestExecutionListenerインターフェイスの実装を構築して、テスト用の共通のデータベースアクションを抽象化しています。

私が抱えている問題は、リスナーの内部に構成されたオブジェクトを実際のユニットテスターに​​公開する必要があるということです。

私はこれを、TestExecutionListenerのコンテキストを操作して行い、新しいシングルトンBeanを追加します(動作しません)。

または、共通のオブジェクトを別の場所に移動しようとする可能性がありますが、ユニットテストとリスナーの両方にロケータオブジェクトを挿入する必要があります。オートワイヤリングはそこでは機能しないようです。

いずれかの考えか代替ソリューションですか?あなたが本当にあなたのTestExecutionListenerにこのオブジェクトを設定する必要がある場合

答えて

0

私はあなたができる、より良いいくつかのコンテキストコンフィギュレーションクラスのBeanとして、この一般的なオブジェクトを設定し、それ以外の場合は@ContextConfiguration(classes = TestConfig.class)

を使用して、テストクラスのそれを利用できるようにしたいですコンテキスト設定のどこにでもこのBeanを登録し、TestExecutionListenerでautowireして、ここでその状態を変更してください。しかし、それは解決策よりもハックだと思われます。

+0

私はあなたの答えから何かを逃しているようです。ちょっとわかりましたが、テストクラスからインポートされた分離された構成クラスにBeanを追加しました。それはうまく動作します。私が抱えている問題は、テストコンテキストを使ってBeanを探すためにTestExecutionListenerの内部でオートワイヤリングできないということです。それは動作しますが、私は注釈ベースの注入を好むでしょう。 –

+1

次の質問に対する私の答えを見てください:https://stackoverflow.com/questions/42204840/spring-dependency-injection-into-spring-testexecutionlistenen-not-working/44541083#44541083 TestExecutionListenerのBeanをオートワイヤすることができますtestContext.getApplicationContext().getAutowireCapableBeanFactory()。autowireBean(this);を使用します。 inTestClassメソッド内にあります。 TestExecutionListenerに@Autowiredと宣言したすべてのBeanをオートワイヤーします。 –

関連する問題