在我的集成测试中,我想验证是否对某个列应用了唯一约束。我需要添加@Commit
注释以强制事务在测试完成后不回滚。
@Commit
@Test(expected = Throwable.class)
public void assertUniqueConstraintsApplied() {
service.create(ItemBuilder.create()
.name("Item")
.quantity(2)
.build());
service.create(ItemBuilder.create()
.name("Item")
.quantity(2)
.build());
}
测试失败,因为方法assertUniqueConstraintsApplied
本身并没有抛出异常。 AOP代理包装器是负责在方法完成后提交事务并且JUnit不知道它的人。只是在方法中编写entityManager.flush()
似乎有点hacky修复,这就是为什么我想知道是否有一种编写带有这种效果的测试的方法。