0

我有一个 Grails 应用程序,当它在我的本地 Windows 机器上运行时,它通过了我的集成测试套件中的所有测试。当我在 Jenkins 中将我的应用程序部署到我的测试环境并运行相同的测试套件时,其中一些测试由于莫名其妙的原因而失败。

我认为测试盒是 Linux,但我不确定。我在我的 Grails 应用程序中使用模拟,我想知道这是否会导致返回值的混淆。

有人有什么想法吗?

编辑:我的应用程序将 XML 文档转换为新的 XML 文档。返回的 XML 文档中的元素之一应该是 PRODUCT,但作为产品返回。

设置此元素的位置来自从 DB 脚本填充的内存数据库。它与本地和我的测试环境中使用的数据库脚本相同。

该应用程序不会读取任何在不同环境中会有所不同的配置文件。

4

1 回答 1

0

就像其他人所说的那样,这里的信息真的不足以帮助给出一个可靠的答案。我要看的几件事是:

  1. 如果是集成测试失败,那么您可能会遇到一些“糟糕的测试”,这些测试依赖于 Jenkins 正在运行的测试环境中不存在的某些数据。

  2. 跨机器/平台的测试执行顺序没有保证的一致性。因此,测试完全有可能在本地为您通过,只是因为它们以特定顺序运行,并留下了模拟出来的东西或来自另一个测试所需的数据设置。我不久前写了一个插件(http://grails.org/plugin/random-test-order)来帮助识别这些问题。自 Grails 1.3.7 以来我没有更新插件,因此它可能不适用于 2.0+ grails 应用程序。

  3. 如果上述步骤没有发现问题,那么了解您在 Jenkins 与 Local 上调用测试的方式有何不同将是有益的。例如,如果您在 Jenkins 上运行时指定了特定的 grails 环境 ( http://grails.org/doc/latest/guide/conf.html#environments ),那么它与您本地使用的 grails 环境有什么区别。

于 2013-08-13T03:07:37.723 回答