SuperAPI AI 工具集

ln-743-test-infrastructure

测试与质量

查看项目

更新于 10-15 11:52

技能介绍

用途与范围

ln-743-test-infrastructure 是一个 L3 Worker 类型的 Claude 技能,属于 7XX Project Bootstrap 分类,目标是为项目搭建测试框架、覆盖率工具和示例测试。

该技能会:

  • 检测项目技术栈,选择合适的测试框架
  • 创建测试配置文件
  • 设置带阈值的覆盖率报告
  • 创建示例测试以演示测试模式
  • 验证测试套件能够成功运行

该技能不会:

  • 配置代码检查工具(由 ln-741 负责)
  • 设置预提交钩子(由 ln-742 负责)
  • 编写实际的应用测试(由开发者完成)

支持的技术栈

技术 测试框架 覆盖率工具 配置文件
TypeScript/React Vitest v8/Istanbul vitest.config.ts
.NET xUnit Coverlet *.Tests.csproj
Python pytest pytest-cov pytest.ini 或 pyproject.toml

使用方式

技能执行分为五个阶段。

阶段 1:检查现有测试

在创建测试基础设施之前,先检查项目中已有的内容。

需要检查的文件:

  • TypeScript:vitest.config.、jest.config.、.test.ts、.spec.ts
  • .NET:.Tests.csproj、.IntegrationTests.csproj
  • Python:pytest.ini、conftest.py、tests/、test_*.py

判断逻辑:

  • 若已存在完整的测试设置:跳过(并告知用户)
  • 若只有部分设置:询问是扩展还是替换
  • 若没有任何测试:基于模板创建

阶段 2:创建测试配置

TypeScript/React(Vitest):创建 vitest.config.ts,使用 v8 覆盖率提供方(比 Istanbul 更快),为 React 配置 jsdom 环境,设置覆盖率阈值(最低 80%),创建 testing-library 的设置文件。依赖安装命令:

npm install -D vitest @vitest/coverage-v8 @testing-library/react @testing-library/jest-dom jsdom

.NET(xUnit):创建测试项目,命令如下:

dotnet new xunit -n {Project}.Tests
dotnet sln add tests/{Project}.Tests

.csproj 中需要的依赖:Microsoft.NET.Test.Sdk、xunit、xunit.runner.visualstudio、Moq、FluentAssertions、coverlet.collector。

Python(pytest):在 pyproject.toml 中添加配置或创建 pytest.ini,配置测试发现路径、覆盖率阈值(最低 80%)和覆盖率报告。依赖安装命令:

pip install pytest pytest-cov pytest-asyncio
# 或使用 uv:
uv add --dev pytest pytest-cov pytest-asyncio

阶段 3:创建测试目录结构

TypeScript 采用与源码同目录(co-located)的测试方式,并包含 test/setup.ts 设置文件。

.NET 使用 tests/ 目录,包含 {Project}.Tests 项目及可选的 {Project}.IntegrationTests 项目。

Python 使用 tests/ 目录,包含 conftest.py(共享 fixture)、unit/ 和可选的 integration/。对于 FastAPI/异步项目,基于 conftest_template.py 生成 conftest.py,提供共享的异步 HTTP 客户端 fixture,并调整应用导入路径以匹配项目。

阶段 4:创建示例测试

每种技术栈创建一个示例测试,演示:AAA 模式(Arrange-Act-Assert)、测试命名约定、基本断言、框架特有模式。

  • TypeScript 示例:testing-library 的 render()、screen 查询、Jest-dom 匹配器
  • .NET 示例:[Fact] 特性、使用 Moq 进行模拟、FluentAssertions 语法
  • Python 示例:pytest fixture、assert 语句、参数化测试(可选)

阶段 5:验证测试运行

  • TypeScript:npm test 与 npm run test:coverage,预期示例测试通过并生成覆盖率报告
  • .NET:dotnet test 与 dotnet test --collect:"XPlat Code Coverage",预期示例测试通过并收集覆盖率
  • Python:pytest 与 pytest --cov=src --cov-report=term-missing,预期示例测试通过并显示覆盖率报告

若失败:检查测试配置、依赖,并验证示例测试语法。

覆盖率要求

指标 最低 目标
行 70% 80%
分支 70% 80%
函数 70% 80%
语句 70% 80%

应配置 CI,当覆盖率低于阈值时失败。

关键规则

  1. 必须配置覆盖率阈值,无例外。
  2. 示例测试必须通过,不要创建损坏的示例。
  3. 所有示例测试使用 AAA 模式(Arrange-Act-Assert)。
  4. 单元测试与源码同目录(TypeScript)或使用 tests/ 目录(.NET、Python)。

监控(2.1.98+):当脚手架后的测试验证预计超过 30 秒时,使用 Monitor。回退方案:Bash(run_in_background=true)。

完成定义

  • 测试框架已安装并配置
  • 覆盖率工具已配置,阈值 80%
  • 测试目录结构已创建
  • 示例测试已创建并通过
  • npm test / dotnet test / pytest 可成功运行
  • 覆盖率报告可生成
  • 已告知用户:如何运行测试、在哪里添加新测试、覆盖率要求

参考文件

文件 用途
vitest_template.ts Vitest 配置模板
vitest_setup_template.ts 测试设置文件
react_test_template.tsx React 组件测试
xunit_csproj_template.xml .NET 测试项目
xunit_test_template.cs xUnit 测试示例
pytest_config_template.toml pytest 配置
pytest_test_template.py pytest 测试示例
conftest_template.py 共享异步 fixture(FastAPI)
testing_guide.md 测试最佳实践

错误处理

错误 原因 解决方案
Vitest not found 未安装 npm install -D vitest
jsdom errors 缺少依赖 npm install -D jsdom
xUnit discovery fails SDK 版本不匹配 更新 Microsoft.NET.Test.Sdk
pytest not found 不在 PATH 中 pip install pytest
Coverage 0% 源路径错误 检查 coverage.include 配置

版本:3.0.0,最后更新:2026-03-18。