【问题标题】:Jest with coverage takes too long in TeamCity在 TeamCity 中,覆盖范围的玩笑需要很长时间
【发布时间】:2020-03-29 15:57:53
【问题描述】:

几个月前,我们将项目从 jasmine 迁移到 jest,现在想在我们的 TeamCity CI 服务器中添加一些覆盖范围。我们注意到,在本地开发者的机器上,第一次运行(有覆盖)大约需要 2-2.5 分钟,所有后续运行大约需要 20 秒,但在 TeamCity 中大约需要 6 分钟(有覆盖),只有 1:30没有覆盖。有什么方法可以加快 TeamCity 覆盖率的测试?

【问题讨论】:

    标签: jestjs


    【解决方案1】:

    已知问题 [3] 中的覆盖率会使运行测试变慢。但是,没有解释什么可以解决这个问题。唯一的提示是在运行测试时尝试使用 -i 标志。

    我的来源 [2] 说明了为什么该标志可以同时提高测试的效率。该标志禁用多处理,并且在一些资源有限的机器上(他们说)这将效率提高了两倍。

    我的消息来源 [1] 还告诉 22.4.4 之后的版本效率下降(明显慢于 22.4.4),并且直到撰写文章时才修复。

    此外,他们在 [1] 中建议使用 Node 而不是 JSDOM,因为 Node 更快。

    所以,使用:

     // package.json
     "jest": {
          "testEnvironment": "node"
      }
    

    希望这些火箭加速您的测试,您可以通过打开覆盖选项来标记速度损失。


    来源:

    [1]https://itnext.io/how-to-make-your-sluggish-jest-v23-tests-go-faster-1d4f3388bcdd

    [2]Why does Jest --runInBand speed up tests?

    [3]https://github.com/facebook/jest/issues/2586

    【讨论】:

    • 谢谢米科!我已经尝试过 --runInBand 和 --maxWorkers 参数,但它们没有任何改进。我将尝试旧版本并在此处提供我的结果。
    【解决方案2】:
    • 尝试添加dotnet.cli.test.reporting 参数,这将 恢复正常运行时间。
    • 另一种可能的解决方法是使用vstest 命令而不是 test 因为它支持更精确的测试适配器路径声明。

    【讨论】:

    • Vignesh Kumar A,我认为 dotnet 无论如何都与 Jest 测试框架(基于 Javascript)无关,而且我不太明白什么是 vstest 命令。我无法在 Jest 文档中找到它。您能否对上述评论做出任何解释?
    • 对不起,这个命令适用于带有 .net 框架的 Nunit。
    猜你喜欢
    • 2018-05-31
    • 2020-11-23
    • 2011-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    • 2013-09-07
    相关资源
    最近更新 更多