【问题标题】:Jest tests running super slow in DockerJest 测试在 Docker 中运行速度超慢
【发布时间】:2020-12-08 13:56:58
【问题描述】:

我们的测试套件在我们的本地开发环境中运行并且速度足够好。但是在 docker 中它超级慢。

我们尝试了options provided on the official Jest documentation site,但两个选项 - runInBand 和 maxWorkers 都没有帮助。

本地:

码头工人:

我们使用 react-app-rewired 来引导我们的应用并运行测试,使用了以下任务:

"test": "react-app-rewired test a --ci --watchAll=false --runInBand --silent"

使用的 Docker 镜像:mhart/alpine-node:12

任何指针?

【问题讨论】:

  • 天哪,我以为我快疯了...原本需要 1 分钟的测试在 Docker 中需要 30 分钟,我就是不知道为什么。
  • 可能是它在某种程度上依赖熵,这可能是容器环境中的瓶颈。

标签: reactjs docker jestjs


【解决方案1】:

不确定您的测试在做什么,但在这种情况下我总是怀疑的第一件事是 DNS 或其他网络操作超时。

您应该了解 哪些 测试花费了这么长时间(在 81 个测试中)并看看它们在做什么。

如果您可以发布更多细节,您可以获得更多帮助,但我只能从您发布的内容中告诉您。

【讨论】:

    【解决方案2】:

    即使来自 Jest 框架也是已知问题:

    https://jestjs.io/docs/troubleshooting#tests-are-extremely-slow-on-docker-andor-continuous-integration-ci-server

    • 根据调查结果,缓解此问题并将速度提高多达 50% 的一种方法是按顺序运行测试。

    jest --runInBand

    • 在 Travis-CI 等持续集成服务器上加快测试执行时间的另一种方法是将最大工作池设置为 ~4。

    jest --maxWorkers=4

    【讨论】:

    • OP 明确提到这两个选项都没有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2021-07-21
    • 2020-04-22
    相关资源
    最近更新 更多