@TestExecutionListeners(listeners={ServletTestExecutionListener.class,DirtiesContextBeforeModesTestExecutionListener.class,ApplicationEventsTestExecutionListener.class,DependencyInjectionTestExecutionListener.class,DirtiesContextTestExecutionListener.class,TransactionalTestExecutionListener.class,SqlScriptsTestExecutionListener.class,EventPublishingTestExecutionListener.class}, inheritListeners=false) @Transactional public abstract class AbstractTransactionalJUnit4SpringContextTests extends AbstractJUnit4SpringContextTests
AbstractJUnit4SpringContextTests の抽象トランザクション拡張機能。DataSourceSE Bean および PlatformTransactionManager Bean が Spring アプリケーションコンテキストで定義されることが期待されます。 このクラスは JdbcTemplate を公開し、テーブル内の行数カウント、(WHERE 句を使用する可能性があり)、テーブルから削除、テーブルのドロップ、トランザクション内で SQL スクリプトを実行する簡単な方法を提供します。
具象サブクラスは、AbstractJUnit4SpringContextTests で概説されている同じ要件を満たさなければなりません。
以下の TestExecutionListeners がデフォルトで構成されています。
ServletTestExecutionListenerDirtiesContextBeforeModesTestExecutionListenerApplicationEventsTestExecutionListenerDependencyInjectionTestExecutionListenerDirtiesContextTestExecutionListenerTransactionalTestExecutionListenerSqlScriptsTestExecutionListenerEventPublishingTestExecutionListenerこのクラスは、拡張の便宜としてのみ機能します。
SpringRunner、@ContextConfiguration、@TestExecutionListeners などを使用して独自のカスタムテストクラスを構成できます。SpringRunner 以外のランナーを使用する場合は、Spring Framework 4.2 以降、SpringClassRule と SpringMethodRule を使用して、@RunWith(...) で選択したランナーを指定できます。注意 : このクラスには、JUnit 4.12 以上が必要です。
AbstractJUnit4SpringContextTests, ContextConfiguration, TestExecutionListeners, TransactionalTestExecutionListener, SqlScriptsTestExecutionListener, Transactional, Commit, Rollback, BeforeTransaction, AfterTransaction, JdbcTestUtils, AbstractTransactionalTestNGSpringContextTests| 修飾子と型 | フィールドと説明 |
|---|---|
protected JdbcTemplate | jdbcTemplate この基本クラスが管理する JdbcTemplate。サブクラスで使用できます。 |
applicationContext, logger| コンストラクターと説明 |
|---|
AbstractTransactionalJUnit4SpringContextTests() |
| 修飾子と型 | メソッドと説明 |
|---|---|
protected int | countRowsInTable(StringSE tableName) 指定されたテーブルの行をカウントするための簡易メソッド。 |
protected int | countRowsInTableWhere(StringSE tableName, StringSE whereClause) 指定された WHERE 句を使用して、指定されたテーブルの行をカウントする簡易メソッド。 |
protected int | deleteFromTables(StringSE... names) 指定されたテーブルからすべての行を削除するための簡易メソッド。 |
protected int | deleteFromTableWhere(StringSE tableName, StringSE whereClause, ObjectSE... args) 提供された WHERE 句を使用して、指定されたテーブルからすべての行を削除する簡易メソッド。 |
protected void | dropTables(StringSE... names) 指定されたすべてのテーブルを削除するための簡易メソッド。 |
protected void | executeSqlScript(StringSE sqlResourcePath, boolean continueOnError) 指定された SQL スクリプトを実行します。 |
void | setDataSource(DataSourceSE dataSource) 通常、依存性注入によって提供される DataSource を設定します。 |
void | setSqlScriptEncoding(StringSE sqlScriptEncoding) プラットフォームのエンコーディングと異なる場合は、SQL スクリプトのエンコーディングを指定します。 |
setApplicationContextcloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEprotected final JdbcTemplate jdbcTemplate
JdbcTemplate。サブクラスで使用できます。public AbstractTransactionalJUnit4SpringContextTests()
@Autowired public void setDataSource(DataSourceSE dataSource)
DataSource を設定します。 このメソッドは、jdbcTemplate インスタンス変数もインスタンス化します。
public void setSqlScriptEncoding(StringSE sqlScriptEncoding)
protected int countRowsInTable(StringSE tableName)
tableName - 行をカウントするテーブル名 JdbcTestUtils.countRowsInTable(org.springframework.jdbc.core.JdbcTemplate, java.lang.String)protected int countRowsInTableWhere(StringSE tableName, StringSE whereClause)
WHERE 句を使用して、指定されたテーブルの行をカウントする簡易メソッド。 詳細については、JdbcTestUtils.countRowsInTableWhere(org.springframework.jdbc.core.JdbcTemplate, java.lang.String, java.lang.String) の Javadoc を参照してください。
tableName - 行をカウントするテーブルの名前 whereClause - クエリに追加する WHERE 句 WHERE 句に一致するテーブル内の行の数 JdbcTestUtils.countRowsInTableWhere(org.springframework.jdbc.core.JdbcTemplate, java.lang.String, java.lang.String)protected int deleteFromTables(StringSE... names)
トランザクション以外では注意して使用してください!
names - 削除するテーブルの名前 JdbcTestUtils.deleteFromTables(org.springframework.jdbc.core.JdbcTemplate, java.lang.String...)protected int deleteFromTableWhere(StringSE tableName, StringSE whereClause, ObjectSE... args)
WHERE 句を使用して、指定されたテーブルからすべての行を削除する簡易メソッド。トランザクション以外では注意して使用してください!
詳細については、JdbcTestUtils.deleteFromTableWhere(org.springframework.jdbc.core.JdbcTemplate, java.lang.String, java.lang.String, java.lang.Object...) の Javadoc を参照してください。
tableName - 行を削除するテーブルの名前 whereClause - クエリに追加する WHERE 句 args - クエリにバインドする引数(対応する SQL 型を推測するために PreparedStatement に残します)。引数値だけでなく、SQL 型とオプションでスケールも示す SqlParameterValue オブジェクトを含めることもできます。JdbcTestUtils.deleteFromTableWhere(org.springframework.jdbc.core.JdbcTemplate, java.lang.String, java.lang.String, java.lang.Object...)protected void dropTables(StringSE... names)
トランザクション以外では注意して使用してください!
names - 削除するテーブルの名前 JdbcTestUtils.dropTables(org.springframework.jdbc.core.JdbcTemplate, java.lang.String...)protected void executeSqlScript(StringSE sqlResourcePath, boolean continueOnError) throws DataAccessException
トランザクション以外では注意して使用してください!
スクリプトは通常、クラスパスによってロードされます。
ロールバックが予想される場合は、このメソッドを使用して DDL を実行しないでください。
sqlResourcePath - SQL スクリプトの Spring リソースパス continueOnError - エラー発生時に例外をスローせずに続行するかどうか DataAccessException - ステートメントの実行中にエラーが発生した場合 ResourceDatabasePopulator, setSqlScriptEncoding(java.lang.String)