0

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

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

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

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

4

1 回答 1

0

罪魁祸首在我的persistence.xml档案里。我在用

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

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

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

于 2012-05-23T16:01:16.220 回答