我有一个Grails应用程序,当在我的本地Windows机器上运行时,会通过我的集成测试套件中的所有测试。当我将我的应用程序部署到Jenkins的Test环境中并运行相同的测试套件时,其中一些测试因为莫名其妙的原因而失败。
我认为测试盒是Linux,但我不确定。我在我的Grails应用程序中使用模拟,我想知道这是否会导致返回值的混淆。
有没有人有任何想法?
编辑: 我的应用程序将XML文档转换为新的XML文档。返回的XML文档中的一个元素应该是PRODUCT,但作为产品返回。
设置此元素的位置来自从DB脚本填充的内存数据库。它与本地和我的测试环境中使用的DB脚本相同。
该应用程序不会读取在不同环境中会有所不同的任何配置文件。
答案 0 :(得分:0)
就像其他人所说的那样,这里真的没有足够的信息来帮助给出一个可靠的答案。我要看的几件事情是:
如果它的集成测试失败,你可能会遇到一些“错误的测试”,它们依赖于Jenkins正在运行的测试环境中不存在的某些数据。
跨机器/平台的测试执行顺序没有保证一致性。因此,测试完全可能是因为它们以特定顺序运行并且在某个测试中将模拟结果或数据设置放在另一个测试中。我不久前写了一个插件(http://grails.org/plugin/random-test-order)来帮助识别这些问题。我没有更新自Grails 1.3.7以来的插件,所以它可能不适用于2.0+ grails应用程序。
如果上述步骤无法确定问题,那么知道如何在Jenkins vs. Local上调用测试有任何差异将是有益的。例如,如果您在Jenkins上运行时指定了特定的grails环境(http://grails.org/doc/latest/guide/conf.html#environments),那么它与本地使用的grails环境之间存在差异。