私の単体テスト構成は次のとおりです。JUnit、DBUnit、Spring。
私のSpringコンテキストでは、組み込みデータベース-hsqldbがあります
<jdbc:embedded-database id="dataSourceSpied">
<jdbc:script location="classpath:test_ddl.sql"/>
</jdbc:embedded-database>
私の単体テストには、次のクラスレベルの注釈が付いています。
@ContextConfiguration(locations = "classpath:/test-context.xml")
@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
@TestExecutionListeners({DependencyInjectionTestExecutionListener.class,
TransactionDbUnitTestExecutionListener.class,
DbUnitTestExecutionListener.class})
私のテスト スキーマには次のフラグメントがあります。
CREATE TABLE test(
id BIGINT GENERATED BY DEFAULT AS IDENTITY,
name VARCHAR(255) NOT NULL,
...
);
注釈は@Transactional
、単一の単体テスト メソッド中に行った変更をロールバックしますが、値はクリアしませんid
! 自動生成されid
た値はリセットされないため、単体テストは実行される順序に依存します!
テスト中にSpringで自動生成されたHSQLDBのdbフィールドをリセットするには?
おそらくtrucate
コマンドが役立つでしょうか?