Java SE プロジェクトで、CDI 用の OpenWebBeans で Apache Deltaspike を使用しています。@Transactional
Java EE プロジェクトで Spring Data JPA を使用しましたが、クラスまたはテスト メソッドの上にアノテーションを追加することで、データをデータベースにコミットしない単体テストをセットアップするのは簡単でした。ただし、Deltaspike で同等の手法を見つけることができませんでした。
各テストの後に手動でデータをロールバックするか、テストが実行されるたびにデータベースを削除して再作成する以外に、各単体テストが完了後にデータの変更をロールバックするように指定する方法はありますか?
私の単体テストは次のようになります。
@RunWith(CdiTestRunner.class)
@Transactional // has no effect
public class FooUnitTest {
@Inject
private FooRepository fooRepository;
@Test
@Transactional // no effect either
public void testFoo() {
Foo foo = new Foo();
fooRepository.save(foo); // foo is persisted even outside the test
}
}
@Repository
public interface FooRepository extends EntityRepository<Foo, Integer> { }