26

私の知る限り、TestExecutionListeners@BeforeClassは JUnit のメソッドのように機能します。私が理解していないのは、なぜ を使用する必要があるのかDependencyInjectionTestExecutionListener​​、TransactionalTestExecutionListenerそしてDirtiesContextTestExecutionListenerを使用する必要があるのか​​ということDbUnitTestExecutionListenerです。

通常、DbUnit がなくても、データベースを作成してデータを入力できます。なぜ突然これらのリスナーを使用しCRUDて、データベースに対して何らかの処理を行う必要があるのでしょうか?

4

1 に答える 1

43

TestExecutionListenersSpring TestContext フレームワークで実行されるテストにさまざまなタイプの機能を提供します。

特定のリスナーが何をするかに興味がある場合は、それぞれのクラスの Javadoc を読むのが最善の方法です。さらに、Spring リファレンス マニュアルのテストの章では、各リスナーの使用方法とその機能について詳しく説明しています。

特定のケースで、@DirtiesContextを使用していない場合は、を使用する必要はありませんDirtiesContextTestExecutionListenerDependencyInjectionTestExecutionListenerおよびについてTransactionalTestExecutionListenerは、テストに依存関係を注入するために (たとえば、 、 、 などを介して)、トランザクション テスト (つまり、 で注釈が付けられたテスト) にそれらが必要になる可能性@Autowired@Injectあり@Resourceます@Transactional

前述のリスナーはデフォルトで有効になっていることにも注意してください。したがって、 DbUnit のようなカスタム リスナーなしで Spring TestContext フレームワークを使用していた場合、リスナーが存在することにまったく気付かなかったということになります。リファレンスマニュアルのTestExecutionListener 構成に関するセクションも、物事を明確にするのに役立ちます。ただし、マージやデフォルト リスナーの自動検出などの一部の機能は、Spring Framework 4.1+ でのみ使用できることに注意してください。

よろしく、

Sam (Spring TestContext フレームワークの作成者)

于 2014-12-09T22:06:10.277 に答える