SuperAPI AI 工具集

dotnet-test-quality

测试与质量

查看项目

更新于 10-16 09:46

技能介绍

用途:针对已搭建好的 .NET 测试项目,衡量测试有效性,发现测试盲区与高风险代码。前提为 .NET 8.0+,且已通过 dotnet-add-testing 完成测试项目脚手架并引用 coverlet 包。

主要能力:

  1. Coverlet 覆盖率采集。推荐 coverlet.collector 方式,命令如 dotnet test --collect:"XPlat Code Coverage",可用 Format 指定 cobertura、opencover 等输出,通过 Exclude、ExcludeByAttribute、ExcludeByFile 过滤生成代码、测试项目与迁移目录,也可用 runsettings 文件固定配置。
  2. ReportGenerator 报告。安装 dotnet tool install -g dotnet-reportgenerator-globaltool,用 reportgenerator -reports:"**/TestResults/*/coverage.cobertura.xml" -targetdir:"coverage-report" -reporttypes:"Html;TextSummary" 生成可读报告并合并多测试项目结果。注意 ReportGenerator 本身不强制阈值;阈值需用 coverlet.msbuild 的 /p:Threshold 参数或解析文本摘要。
  3. CRAP 分析。基于复杂度与覆盖度计算 CRAP(m) = complexity^2 * (1 - coverage/100)^3 + complexity,用 OpenCover 格式配合 RiskHotspots 报告识别高风险方法,分数越高越需补测试或降复杂度。
  4. Stryker.NET 变异测试。安装 dotnet tool install -g dotnet-stryker,在测试项目目录运行 dotnet stryker,可用 stryker-config.json 配置项目、报告器、变异级别、mutate 范围与 high/low/break 阈值;结果分 Killed、Survived、No Coverage、Timeout,变异分数达 80%+ 视为较强。
  5. 脆弱测试。常见原因包括共享状态、时间依赖、竞态、外部依赖、端口冲突与文件系统竞争;可用重复运行、xUnit 条件跳过、TimeProvider/FakeTimeProvider 替换 DateTime.Now、以及带工单引用的隔离跳过策略处理。

限制与边界:不覆盖测试项目脚手架、测试策略决策、CI 流水线集成(分别见相关技能)。变异测试计算开销大,宜聚焦关键路径。资料未提供具体收费或价格信息。