我在Java SE项目中使用Apache Deltaspike和OpenWebBeans进行CDI。我在Java EE项目中使用了Spring Data JPA,通过在类或测试方法上面添加@Transactional
注释,可以很容易地设置未向数据库提交数据的单元测试。但是,我还没有找到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> { }