0

我有一个 Spring 3.2 应用程序,使用 Hibernate 和一些 JUnit 4 测试用例。我使用 MySQL 5 作为数据库。

为回滚的 DAO 类编写测试用例时,测试用例通过。但是,如果我告诉测试用例不要回滚 (@Rollback(false)),则测试用例会失败。因此,我不相信 defaultRollback=true 时通过的测试用例的有效性。

有问题的测试用例是在删除对象 [Company] 时,该对象具有许多 [Team] 对象。一个 [Team] 对象也可以有许多子 [Team] 对象。

删除 [Company] 时,它将删除级联到对象。当它删除 [Team] 对象时,我没有指定将删除级联到子 [Team] 对象,因此 MySQL 抛出了外键约束违规异常。测试用例(当它被设置回滚时),通过!但是,它肯定不应该吗?如果在测试用例上将回滚设置为 false,那么它会失败并抱怨 MySQL 约束冲突异常。

请问有什么建议吗?如果 @Rollback 设置为 true 然后为 false,为什么测试用例的响应不同?

4

1 回答 1

0

我认为这是冲洗或不冲洗的问题。我认为您在回滚模式下隐藏了一些问题,因为更改不会发送到数据库。

em.flush()要在回滚模式下测试结束时添加此内容。如果出现问题,您可以修复它。

于 2012-11-28T15:20:27.970 回答