【问题标题】:Jest test takes 75 seconds but each test only a few milliseconds开玩笑测试需要 75 秒,但每次测试只需几毫秒
【发布时间】:2022-01-26 19:49:26
【问题描述】:

在我们的 CI (github) 工作流中,我有一个类似这样的 Jest 输出。

PASS a/b/c.spec.tsx (75.856 s)
  Test
    ✓ should a (45 ms)
    ✓ should b (53 ms)
    ✓ should c (19 ms)
    ✓ should d (13 ms)
    ✓ should e (12 ms)
    ✓ should f (14 ms)
    ✓ should g (18 ms)

在我的本地设置中,需要 7 秒。我删除多少个单独的测试似乎也无关紧要,时间大致相同(这是有道理的,每个测试只有几毫秒)。我的测试看起来像这样

import React from 'react';
import { render, screen } from '@testing-library/react';
import Foo from './foo';

describe('Test', () => {
  it('should a', () => {
    const { baseElement } = render(
      <Foo
        text="SomeText"
        number={0}
        moretext="More Text"
      />
    );
    expect(baseElement).toBeTruthy();
  });

  it('should b', () => {
    const { baseElement } = render(
      <Foo
        text="SomeText"
        number={0}
        moretext="More Text"
      />
    );
    expect(baseElement).toBeTruthy();
    expect(baseElement.querySelector('h2')).toHaveTextContent(
      'SomeText'
    );
  });

... 等等。一切都是通过查询选择器完成的。但同样,每次测试都很快。如果每个测试只有几毫秒,为什么在 GitHub CI 上运行需要 75 秒(始终如一)?在我的本地设置中,即使 7 秒也是痛苦的。

【问题讨论】:

  • 您好,能否提供您的工作流程 yaml?我怀疑这需要很长时间,因为它正在下载你所有的节点模块
  • 我认为你是对的。我删除了测试,基本上另一个测试报告“75 秒”,所以是的。

标签: reactjs github jestjs cicd


【解决方案1】:

在使用 Jest 测试时也经历过同样的缓慢 - 尤其是在 Windows 环境中运行。据报道,它非常依赖于操作系统,并且需要一些时间来启动 - 显然与它在开始测试之前如何分析您的依赖关系有关,以便以后可以更快地运行,这解释了为什么删除测试对减少测试持续时间几乎没有作用。

报告了多个问题 hereherehere 等,因此这是一个已知问题,并且正在进行优化其中一些性能的工作,但可能值得考虑其他测试框架,如 Jasmine或摩卡。

【讨论】:

    猜你喜欢
    • 2021-03-16
    • 2017-03-12
    • 1970-01-01
    • 2019-07-16
    • 1970-01-01
    • 2020-02-06
    • 2020-03-25
    • 1970-01-01
    • 2017-03-11
    相关资源
    最近更新 更多