【发布时间】:2011-08-29 12:01:01
【问题描述】:
我有两台机器,一台 Continuus 集成服务器和一台开发机器。
两台机器运行相同版本的 java、maven 和 grails,并且都运行 Ubuntu。 我能想到的唯一区别是 CI 是在虚拟化环境中。
一些证据:
CI java -version
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode)
DEV java -version
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode)
CI mvn -version
Apache Maven 2.2.1 (rdebian-1)
Java version: 1.6.0_24
Java home: /usr/lib/jvm/java-6-sun-1.6.0.24/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux" version: "2.6.32-31-server" arch: "amd64" Family: "unix"
DEV mvn -version
Apache Maven 2.2.1 (rdebian-1)
Java version: 1.6.0_24
Java home: /usr/lib/jvm/java-6-sun-1.6.0.24/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux" version: "2.6.32-31-generic" arch: "amd64" Family: "unix"
CI 圣杯
Welcome to Grails 1.3.7 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: /usr/local/lib/grails-1.3.7
DEV grails
Welcome to Grails 1.3.7 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: /home/netbrain/dev/apps/grails-1.3.7
我从两台机器上的版本控制中进行了干净的检查,并删除了文件夹 ~/.m2 和 ~/.ivy2 以避免任何不一致。
当我在 CI 服务器上运行 grails test-app 时,6 次测试似乎失败了。当它们在我的 DEV 系统上全部通过时。
CI grails 测试应用
Tests Completed in 28213ms ...
-------------------------------------------------------
Tests passed: 14
Tests failed: 6
-------------------------------------------------------
DEV grails 测试应用
Tests Completed in 25889ms ...
-------------------------------------------------------
Tests passed: 20
Tests failed: 0
-------------------------------------------------------
当我查看从测试输出中得到的错误消息时,我可以看到如下内容:
junit.framework.AssertionFailedError: expected:<1> but was:<0>
not-null property references a null or transient value
据我所知,这些测试在逻辑上是正确的,它们不应该出现这些错误,尤其是当几个得到“瞬态值”错误的测试没有将任何内容存储到数据库时!
对我来说,问题似乎在于休眠/内存数据库/测试阶段的组合。
导致此问题的环境之间必须存在一些差异。有没有人有任何提示我可以如何继续以进一步调试问题?
再次感谢!
编辑
好的,这就是我尝试过的:
- 删除文件夹
~/.m2、~/.ivy2、~/.grails - 运行 grails 干净
- 运行 grails test-app
但我仍然在我的 CI 环境中看到失败的测试,但在开发机器上却没有。
编辑
一些新的发展..
我尝试只运行在 CI 上失败的测试,似乎在运行 grails test-app :integration path.to.failing.tests 时它们都PASS!在运行 grails test-app 时会导致这些测试FAIL! :(
我完全不知道这里发生了什么......
【问题讨论】:
-
您是否尝试过删除本地 Maven 存储库?还要检查 Maven settings.xml,那里可能有不同的配置。
-
将此作为错误报告添加到 Grails 项目:jira.grails.org/browse/GRAILS-7513
-
这是一个后续问题,可能是也可能不是我的问题的原因。 stackoverflow.com/questions/6080568/…
标签: java hibernate grails maven