@TestExecutionListeners(value={TransactionalTestExecutionListener.class,SqlScriptsTestExecutionListener.class}) @Transactional public abstract class AbstractTransactionalTestNGSpringContextTests extends AbstractTestNGSpringContextTests
AbstractTestNGSpringContextTests which adds convenience functionality
for JDBC access. Expects a DataSource bean and a
PlatformTransactionManager bean to be defined in the Spring
application context.
This class exposes a JdbcTemplate and provides an easy way to
count the number of rows in a table
(potentially with a WHERE clause),
delete from tables,
drop tables, and
execute SQL scripts within a transaction.
Concrete subclasses must fulfill the same requirements outlined in
AbstractTestNGSpringContextTests.
The following TestExecutionListeners are configured by default:
AbstractTestNGSpringContextTests,
ContextConfiguration,
TestExecutionListeners,
TransactionalTestExecutionListener,
SqlScriptsTestExecutionListener,
Transactional,
Commit,
Rollback,
BeforeTransaction,
AfterTransaction,
JdbcTestUtils,
AbstractTransactionalJUnit4SpringContextTests| Modifier and Type | Field and Description |
|---|---|
protected JdbcTemplate |
jdbcTemplate
The
JdbcTemplate that this base class manages, available to subclasses. |
applicationContext, logger| Constructor and Description |
|---|
AbstractTransactionalTestNGSpringContextTests() |
| Modifier and Type | Method and Description |
|---|---|
protected int |
countRowsInTable(java.lang.String tableName)
Convenience method for counting the rows in the given table.
|
protected int |
countRowsInTableWhere(java.lang.String tableName,
java.lang.String whereClause)
Convenience method for counting the rows in the given table, using the
provided
WHERE clause. |
protected int |
deleteFromTables(java.lang.String... names)
Convenience method for deleting all rows from the specified tables.
|
protected int |
deleteFromTableWhere(java.lang.String tableName,
java.lang.String whereClause,
java.lang.Object... args)
Convenience method for deleting all rows from the given table, using the
provided
WHERE clause. |
protected void |
dropTables(java.lang.String... names)
Convenience method for dropping all of the specified tables.
|
protected void |
executeSqlScript(java.lang.String sqlResourcePath,
boolean continueOnError)
Execute the given SQL script.
|
void |
setDataSource(javax.sql.DataSource dataSource)
Set the
DataSource, typically provided via Dependency Injection. |
void |
setSqlScriptEncoding(java.lang.String sqlScriptEncoding)
Specify the encoding for SQL scripts, if different from the platform encoding.
|
run, setApplicationContext, springTestContextAfterTestClass, springTestContextAfterTestMethod, springTestContextBeforeTestClass, springTestContextBeforeTestMethod, springTestContextPrepareTestInstanceprotected final JdbcTemplate jdbcTemplate
JdbcTemplate that this base class manages, available to subclasses.public AbstractTransactionalTestNGSpringContextTests()
@Autowired public void setDataSource(javax.sql.DataSource dataSource)
DataSource, typically provided via Dependency Injection.
This method also instantiates the jdbcTemplate instance variable.
public void setSqlScriptEncoding(java.lang.String sqlScriptEncoding)
protected int countRowsInTable(java.lang.String tableName)
tableName - table name to count rows inJdbcTestUtils.countRowsInTable(org.springframework.jdbc.core.JdbcTemplate, java.lang.String)protected int countRowsInTableWhere(java.lang.String tableName,
java.lang.String whereClause)
WHERE clause.
See the Javadoc for JdbcTestUtils.countRowsInTableWhere(org.springframework.jdbc.core.JdbcTemplate, java.lang.String, java.lang.String) for details.
tableName - the name of the table to count rows inwhereClause - the WHERE clause to append to the queryWHERE clauseJdbcTestUtils.countRowsInTableWhere(org.springframework.jdbc.core.JdbcTemplate, java.lang.String, java.lang.String)protected int deleteFromTables(java.lang.String... names)
Use with caution outside of a transaction!
names - the names of the tables from which to deleteJdbcTestUtils.deleteFromTables(org.springframework.jdbc.core.JdbcTemplate, java.lang.String...)protected int deleteFromTableWhere(java.lang.String tableName,
java.lang.String whereClause,
java.lang.Object... args)
WHERE clause.
Use with caution outside of a transaction!
See the Javadoc for JdbcTestUtils.deleteFromTableWhere(org.springframework.jdbc.core.JdbcTemplate, java.lang.String, java.lang.String, java.lang.Object...) for details.
tableName - the name of the table to delete rows fromwhereClause - the WHERE clause to append to the queryargs - arguments to bind to the query (leaving it to the PreparedStatement to guess the corresponding SQL type); may also contain
SqlParameterValue
objects which indicate not only the argument value but also the SQL type
and optionally the scale.JdbcTestUtils.deleteFromTableWhere(org.springframework.jdbc.core.JdbcTemplate, java.lang.String, java.lang.String, java.lang.Object...)protected void dropTables(java.lang.String... names)
Use with caution outside of a transaction!
names - the names of the tables to dropJdbcTestUtils.dropTables(org.springframework.jdbc.core.JdbcTemplate, java.lang.String...)protected void executeSqlScript(java.lang.String sqlResourcePath,
boolean continueOnError)
throws DataAccessException
Use with caution outside of a transaction!
The script will normally be loaded by classpath.
Do not use this method to execute DDL if you expect rollback.
sqlResourcePath - the Spring resource path for the SQL scriptcontinueOnError - whether or not to continue without throwing an
exception in the event of an errorDataAccessException - if there is an error executing a statementResourceDatabasePopulator,
setSqlScriptEncoding(java.lang.String)