Spring 3.2 JUnit4测试用例在回滚时通过,但在不回滚时失败了?

时间:2012-11-28 14:39:31

标签: spring hibernate junit4

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

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

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

删除[公司]时,它会将删除级联到对象。当它删除[Team]对象时,我没有指定将删除级联到子[Team]对象,因此MySQL会抛出一个外键约束违例异常。测试用例(当它被设置为回滚时),通过!但是,它肯定不是吗?如果在测试用例上将rollback设置为false,那么它就会失败,并且会对MySQL约束违规异常进行呻吟。

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

1 个答案:

答案 0 :(得分:0)

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

要在回滚模式下测试结束时添加em.flush()。如果出现问题,你可以解决它。