Class SqlScriptsTestExecutionListener

All Implemented Interfaces:
Ordered, AotTestExecutionListener, TestExecutionListener

public class SqlScriptsTestExecutionListener extends AbstractTestExecutionListener implements AotTestExecutionListener
TestExecutionListener that provides support for executing SQL scripts and inlined statements configured via the @Sql annotation.

Class-level annotations that are constrained to a class-level execution phase (BEFORE_TEST_CLASS or AFTER_TEST_CLASS) will be run once before all test methods or once after all test methods, respectively. All other scripts and inlined statements will be executed before or after execution of the corresponding test method, depending on the configured value of the executionPhase flag.

Scripts and inlined statements will be executed without a transaction, within an existing Spring-managed transaction, or within an isolated transaction, depending on the configured value of SqlConfig.transactionMode() and the presence of a transaction manager.

Script Resources

For details on default script detection and how script resource locations are interpreted, see Sql.scripts().

Required Spring Beans

A PlatformTransactionManager and a DataSource, just a PlatformTransactionManager, or just a DataSource must be defined as beans in the Spring ApplicationContext for the corresponding test. Consult the javadocs for SqlConfig.transactionMode(), SqlConfig.transactionManager(), SqlConfig.dataSource(), TestContextTransactionUtils.retrieveDataSource(org.springframework.test.context.TestContext, java.lang.String), and TestContextTransactionUtils.retrieveTransactionManager(org.springframework.test.context.TestContext, java.lang.String) for details on permissible configuration constellations and on the algorithms used to locate these beans.

Required Dependencies

Use of this listener requires the spring-jdbc and spring-tx modules as well as their transitive dependencies to be present on the classpath.

Sam Brannen, Dmitry Semukhin, Andreas Ahlenstorf
See Also: