← 中文资源

简体中文版本

用报告器定位最慢的测试

用报告器按耗时对测试排序,优先优化最慢的少数用例,从而最大幅度缩短整套运行时间。

阅读英文原文

目标

套件整体很慢,但没人知道是哪几个测试占了大部分时间。本配方用 JSON 报告器输出每个测试的耗时,排序后列出最慢的十个,优化首要元凶后再次测量确认其排名下降;提醒耗时随运行波动,应比较多次运行的中位数。

步骤要点

  1. 用 JSON 报告器输出每个测试耗时并排序。
  2. 优化最慢的用例后再次测量对比。
  3. 比较多次运行的中位数以降低噪声。
  4. 把共享的准备逻辑上提或复用夹具。
npx vitest run --reporter=json --outputFile=results.json
jq -r '.testResults[].assertionResults[] | "\(.duration) \(.title)"' results.json | sort -rn | head -10

排错提示

  • 单次耗时波动大,需多次比较。
  • 准备阶段可能才是主要开销。
  • 过度优化会削弱测试价值。

适用边界

  • 测量的是墙钟而非 CPU 成本。
  • CI 硬件与本地不同。