具有不同上下文配置的多个Spring集成测试文件可防止成功持久性

时间:2012-05-22 21:25:14

标签: spring hibernate persistence integration-testing

我有两个独立的集成测试文件,每个文件都有自己的上下文配置文件(XML)。当我将它们都纳入构建周期时,我会遇到问题,但是如果我在其中一个上加上@Ignore注释,那么一切正常。

我遇到的具体问题是坚持不懈;当两个集成测试都在构建周期中时,我的一个测试不会将对象正确地保存到数据库中。我没有得到错误,它说它是持久的,并且Hibernate输出日志条目说它正在插入,但是当我检查数据库表时,什么都没有。然后,当我自己运行测试(@Ignore在另一个测试中)时,它会按原样写入数据库表。

我在上下文配置文件中使用了一些相同的变量名称是否重要?例如,两个文件都有一个名为“deviceTxManager”的事务管理器。我认为这很好,因为它们是用于不同测试的完全独立的配置文件。

在运行下一个测试之前,我应该以某种方式“清除”先前集成测试的上下文吗?

1 个答案:

答案 0 :(得分:0)

罪魁祸首在我的persistence.xml档案中。我正在使用

<property name="hibernate.hbm2ddl.auto" value="create" />

显然是由每个单独的集成测试类单独使用。因此,第二个集成测试是重新创建数据库模式,从而清除前面集成测试所做的数据库更改。

我认为persistence.xml只在所有集成测试运行之前被访问过一次,但显然我错了;它由每个单独的集成测试类单独访问,并为每个测试类清除和重新创建数据库。