Package org.springframework.test.context.junit4

# Class AbstractTransactionalJUnit4SpringContextTests

java.lang.Object
org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests
org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests

All Implemented Interfaces:
  `org.springframework.beans.factory.Aware`, `org.springframework.context.ApplicationContextAware`

@Transactional public abstract class AbstractTransactionalJUnit4SpringContextTests extends AbstractJUnit4SpringContextTests
Abstract transactional extension of `AbstractJUnit4SpringContextTests` 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 `AbstractJUnit4SpringContextTests`.

This class serves only as a convenience for extension.

- If you do not wish for your test classes to be tied to a Spring-specific class hierarchy, you may configure your own custom test classes by using `SpringRunner`, `@ContextConfiguration`, `@TestExecutionListeners`, etc.
- If you wish to extend this class and use a runner other than the `SpringRunner`, as of Spring Framework 4.2 you can use `SpringClassRule` and `SpringMethodRule` and specify your runner of choice via `@RunWith(...)`.

NOTE: This class requires JUnit 4.12 or higher.

Since:
  2.5
Author:
  Sam Brannen, Juergen Hoeller
See Also:
  - `AbstractJUnit4SpringContextTests`
  - `ContextConfiguration`
  - `TestExecutionListeners`
  - `Transactional`
  - `Commit`
  - `Rollback`
  - `BeforeTransaction`
  - `AfterTransaction`
  - `JdbcTestUtils`
  - `AbstractTransactionalTestNGSpringContextTests`

## Field Summary

Fields
Modifier and Type
Field
Description
`protected final org.springframework.jdbc.core.JdbcTemplate`
`jdbcTemplate`
The `JdbcTemplate` that this base class manages, available to subclasses.

### Fields inherited from class org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests

`applicationContext, logger`

## Constructor Summary

Constructors
Constructor
Description
`AbstractTransactionalJUnit4SpringContextTests()`

## Method Summary

Modifier and Type
Method
Description
`protected int`
`countRowsInTable(String tableName)`
Convenience method for counting the rows in the given table.
`protected int`
`countRowsInTableWhere(String tableName, String whereClause)`
Convenience method for counting the rows in the given table, using the provided `WHERE` clause.
`protected int`
`deleteFromTables(String... names)`
Convenience method for deleting all rows from the specified tables.
`protected int`
`deleteFromTableWhere(String tableName, String whereClause, Object... args)`
Convenience method for deleting all rows from the given table, using the provided `WHERE` clause.
`protected void`
`dropTables(String... names)`
Convenience method for dropping all the specified tables.
`protected void`
`executeSqlScript(String sqlResourcePath, boolean continueOnError)`
Execute the given SQL script.
`void`
`setDataSource(DataSource dataSource)`
Set the `DataSource`, typically provided via Dependency Injection.
`void`
`setSqlScriptEncoding(String sqlScriptEncoding)`
Specify the encoding for SQL scripts, if different from the platform encoding.

### Methods inherited from class org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests

`setApplicationContext`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### jdbcTemplate

protected final org.springframework.jdbc.core.JdbcTemplate jdbcTemplate
The `JdbcTemplate` that this base class manages, available to subclasses.

Since:
  3.2

## Constructor Details

### AbstractTransactionalJUnit4SpringContextTests

public AbstractTransactionalJUnit4SpringContextTests()

## Method Details

### setDataSource

@Autowired public void setDataSource(DataSource dataSource)
Set the `DataSource`, typically provided via Dependency Injection.

This method also instantiates the `jdbcTemplate` instance variable.

### setSqlScriptEncoding

public void setSqlScriptEncoding(String sqlScriptEncoding)
Specify the encoding for SQL scripts, if different from the platform encoding.

See Also:
  - `executeSqlScript(java.lang.String, boolean)`

### countRowsInTable

protected int countRowsInTable(String tableName)
Convenience method for counting the rows in the given table.

Parameters:
  `tableName` - table name to count rows in
Returns:
  the number of rows in the table
See Also:
  - `JdbcTestUtils.countRowsInTable(org.springframework.jdbc.core.JdbcOperations, java.lang.String)`

### countRowsInTableWhere

protected int countRowsInTableWhere(String tableName, String whereClause)
Convenience method for counting the rows in the given table, using the provided `WHERE` clause.

See the Javadoc for `JdbcTestUtils.countRowsInTableWhere(org.springframework.jdbc.core.JdbcOperations, java.lang.String, java.lang.String)` for details.

Parameters:
  `tableName` - the name of the table to count rows in
  `whereClause` - the `WHERE` clause to append to the query
Returns:
  the number of rows in the table that match the provided `WHERE` clause
Since:
  3.2
See Also:
  - `JdbcTestUtils.countRowsInTableWhere(org.springframework.jdbc.core.JdbcOperations, java.lang.String, java.lang.String)`

### deleteFromTables

protected int deleteFromTables(String... names)
Convenience method for deleting all rows from the specified tables.

Use with caution outside of a transaction!

Parameters:
  `names` - the names of the tables from which to delete
Returns:
  the total number of rows deleted from all specified tables
See Also:
  - `JdbcTestUtils.deleteFromTables(org.springframework.jdbc.core.JdbcOperations, java.lang.String...)`

### deleteFromTableWhere

protected int deleteFromTableWhere(String tableName, String whereClause, Object... args)
Convenience method for deleting all rows from the given table, using the provided `WHERE` clause.

Use with caution outside of a transaction!

See the Javadoc for `JdbcTestUtils.deleteFromTableWhere(org.springframework.jdbc.core.JdbcOperations, java.lang.String, java.lang.String, java.lang.Object...)` for details.

Parameters:
  `tableName` - the name of the table to delete rows from
  `whereClause` - the `WHERE` clause to append to the query
  `args` - 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.
Returns:
  the number of rows deleted from the table
Since:
  4.0
See Also:
  - `JdbcTestUtils.deleteFromTableWhere(org.springframework.jdbc.core.JdbcOperations, java.lang.String, java.lang.String, java.lang.Object...)`

### dropTables

protected void dropTables(String... names)
Convenience method for dropping all the specified tables.

Use with caution outside of a transaction!

Parameters:
  `names` - the names of the tables to drop
Since:
  3.2
See Also:
  - `JdbcTestUtils.dropTables(org.springframework.jdbc.core.JdbcOperations, java.lang.String...)`

### executeSqlScript

protected void executeSqlScript(String sqlResourcePath, boolean continueOnError) throws org.springframework.dao.DataAccessException
Execute the given SQL script.

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.

Parameters:
  `sqlResourcePath` - the Spring resource path for the SQL script
  `continueOnError` - whether to continue without throwing an exception in the event of an error
Throws:
  `org.springframework.dao.DataAccessException` - if there is an error executing a statement
See Also:
  - `ResourceDatabasePopulator`
  - `setSqlScriptEncoding(java.lang.String)`