SuperAPI AI 工具集

vscode-test-setup

测试与质量

查看项目

更新于 10-16 03:59

技能介绍

用途

vscode-test-setup 是一个用于 VS Code 扩展项目测试环境搭建与配置的技能,目标是实现快速且可靠的测试环境初始化。根据资料,其适用场景包括:

  • 为新的 VS Code 扩展项目搭建测试基础设施
  • 从一个测试框架迁移到另一个测试框架
  • 为扩展测试配置 CI/CD 流水线
  • 设置代码覆盖率工具与阈值
  • 排查测试配置问题
  • 优化测试执行性能

主要能力

技能提供以下配置与指导内容:

  • 测试框架配置:Vitest 作为单元测试框架的完整配置;同时提供 Jest 作为替代方案。集成/E2E 测试因 VS Code 测试宿主需要 Mocha 测试运行器,仍保留 Mocha(通过 @vscode/test-electron)。
  • 覆盖率工具:Vitest 内置覆盖率(使用 v8 或 c8 provider),无需额外覆盖率包;另提供 c8 与 NYC(@istanbuljs/nyc-config-typescript)的替代配置。
  • CI/CD 集成:提供 GitHub Actions 的 test.yml 与 tdd-quality.yml 工作流示例,包含多操作系统矩阵(ubuntu、windows、macos)和 VS Code 版本矩阵(stable、insiders),以及 Coverage 上传到 codecov。
  • VS Code 调试与任务配置:.vscode/launch.json 与 tasks.json 示例,包含运行扩展、运行集成测试、运行单元测试、调试当前测试文件等配置。
  • 测试夹具与数据工厂:test-fixtures 工作区设置与 TestDataFactory 辅助类示例。
  • 常见问题排查:CI 超时、ESM 导入错误、单元测试中 VS Code API 不可用、覆盖率未跟踪 TypeScript 文件、异步时序导致的测试不稳定。

使用方式

资料给出的快速开始步骤如下:

Step 1:安装依赖

# Core testing dependencies
npm install --save-dev \
  vitest \
  @vscode/test-cli \
  @vscode/test-electron

# Coverage is built into Vitest (uses v8 or c8 provider)
# No additional coverage packages needed

Step 2:创建测试配置。可运行安装脚本自动创建全部所需配置文件:

# Execute from skill directory
python scripts/setup-test-env.py --project-path /path/to/extension

或手动创建 vitest.config.ts 与 tsconfig.test.json。

Step 3:配置 package.json 脚本(compile、compile:test、watch、pretest、test、test:unit、test:integration、test:coverage、test:watch,以及 tdd:red、tdd:green、tdd:refactor、tdd:quality-gate)。

Step 4:创建目录结构:src/test/ 下包含 unit(纯单元测试,不使用 VS Code API)、integration(需要 VS Code API)、e2e、fixtures、helpers 等目录,以及 test-fixtures 工作区。

框架与配置要点:

  • Vitest 配置(vitest.config.ts)设置 globals、environment 为 node、include 指向 src/test/unit/**/*.test.ts、v8 覆盖率 provider、阈值(branches/functions/lines/statements 均为 80)、testTimeout 20000,并在 CI 环境下 retry 为 2。
  • 单元测试 setup(src/test/unit/setup.ts)直接复用 Vitest 内置的 expect、vi、describe、it、beforeEach、afterEach,无需 chai、sinon 等额外库。
  • 集成测试 setup(src/test/integration/setup.ts)使用 Mocha,通过 glob 收集 **/*.test.js 文件并运行。
  • 若使用 Jest 替代,提供 jest.config.js 示例,包含 ts-jest preset、覆盖率阈值 80、setupFilesAfterEnv 以及将 vscode 映射到 mock 的 moduleNameMapper。
  • 覆盖率替代配置:c8(package.json 中的 c8 字段)与 NYC(.nycrc.json)。

CI/CD 配置要点:

  • test.yml:在 push(main、develop)与 pull_request(main)时触发,使用 os 与 vscode-version 矩阵,fail-fast 为 false;步骤包含 checkout、setup-node(Node 20、npm 缓存)、npm ci、compile、单元测试、集成测试(Linux 使用 xvfb-run -a;Windows/macOS 直接运行)、上传覆盖率(仅在 ubuntu-latest 且 stable 时,fail_ci_if_error 为 true),另含 lint 作业。
  • tdd-quality.yml:在 push(main)与 pull_request 时触发,执行 TDD Quality Gate(npm run tdd:quality-gate)、检查覆盖率阈值、生成覆盖率报告并以上传产物方式保留 coverage/。

调试配置要点:.vscode/launch.json 提供 Run Extension、Run Integration Tests、Run Unit Tests、Debug Current Test File 四种配置;.vscode/tasks.json 提供 compile、watch、test:unit、test:coverage 任务。

适用场景与限制

适用场景包括新项目测试基础设施初始化、测试框架迁移、CI/CD 流水线配置、覆盖率工具与阈值设置、测试配置问题排查和测试执行性能优化。

限制与注意事项:

  • 集成/E2E 测试由于 VS Code 测试宿主需 Mocha 测试运行器,仍使用 Mocha,而非 Vitest。
  • 单元测试不使用 VS Code API,需与集成测试分离,并使用 VS Code API mock;vitest.config.ts 中可通过 alias 将 vscode 指向 src/test/helpers/vscode-mock.ts。
  • Linux 无头测试需使用 xvfb-run。
  • 覆盖率阈值默认设为 80(branches、functions、lines、statements)。
  • 关于该技能的收费、价格、平台支持范围等事实,资料暂未提供。