私が理解している限り、TestExecutionListenersはJUnitの@BeforeClass
メソッドのように動作します。理解できないのは、DependencyInjectionTestExecutionListener
、TransactionalTestExecutionListener
、DirtiesContextTestExecutionListener
を使用してDbUnitTestExecutionListener
を使用する必要がある理由です。
通常はDbUnitがなくても、データベースを作成してデータを追加できます。データベースに対してCRUD
を実行するためにこれらのリスナーを使用する必要があるのはなぜですか?
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の作者)