web-dev-qa-db-ja.com

TestExecutionListenersとは何ですか、また何をしますか?

私が理解している限り、TestExecutionListenersはJUnitの@BeforeClassメソッドのように動作します。理解できないのは、DependencyInjectionTestExecutionListenerTransactionalTestExecutionListenerDirtiesContextTestExecutionListenerを使用してDbUnitTestExecutionListenerを使用する必要がある理由です。

通常はDbUnitがなくても、データベースを作成してデータを追加できます。データベースに対してCRUDを実行するためにこれらのリスナーを使用する必要があるのはなぜですか?

22
Ali Arda Orhan

TestExecutionListenersは、Spring TestContext Frameworkで実行されるテストにさまざまなタイプの機能を提供します。

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

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

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

よろしく、

サム(Spring TestContext Frameworkの作者)

38
Sam Brannen