【问题标题】:Grails: local tests pass, Test environment tests failGrails:本地测试通过,测试环境测试失败
【发布时间】:2013-08-12 16:24:54
【问题描述】:

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

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

有人有什么想法吗?

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

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

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

【问题讨论】:

  • 没有提供足够的信息。请准确告诉我们哪种测试通过和失败以及在哪些情况下。告诉我们进行测试的环境。
  • 您在测试中是否对系统有任何参考?比如在你的测试中读取一个文件?正如马特提到的,您需要添加更多信息。例如,您在测试盒上遇到的错误。
  • 我在折线差异方面遇到了一些麻烦,但正如马特所说,没有足够的信息来提供答案。

标签: testing grails


【解决方案1】:

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

  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 环境有什么区别。

【讨论】:

  • 我在 Test 上运行测试如下:“clean --non-interactive”“test-app -unit -integration --non-interactive”。当我使用相同的命令在本地运行测试时,它们都通过了。
  • 我要试试你的插件。我怀疑这可能是问题所在。我想知道是否有这样的插件可用。你做得很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-31
  • 1970-01-01
  • 2015-07-08
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
相关资源
最近更新 更多