使用@Commit带注释的方法测试预期的异常

时间:2018-02-22 16:07:02

标签: java spring junit spring-aop spring-transactions

在我的集成测试中,我想验证是否对某个列应用了唯一约束。我需要添加@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修复,这就是为什么我想知道是否有一种编写带有这种效果的测试的方法。

0 个答案:

没有答案