用途:为代理提供运行 .NET 10 测试的标准化指令,确保使用 scripts/test-with-timeout.sh 包装脚本而非直接调用 dotnet test。适用于提交影响 C# 代码的变更前、验证缺陷修复或新功能、开发中运行定向测试,以及标记工作完成前跑通完整测试套件。
主要能力与规则:必须始终使用包装脚本,从仓库根目录运行;完整套件使用 --solution src/tfplan2md.slnx;单项目使用 --project 加相对 src/ 的路径;必须等待测试结束并检查退出码(0 通过,非 0 失败)。禁止直接运行 dotnet test(会因 MSB1001: Unknown switch 报错);禁止手动编辑快照文件,应使用 update-test-snapshots 技能;禁止忽略失败或修改测试期望来匹配错误输出。
背景:.NET 10 有两个不兼容的测试运行器。仓库根目录激活 VSTest,不支持 --solution、--project、--treenode-filter;src/ 目录(含 global.json,runner 为 Microsoft.Testing.Platform)下才可用这些参数。包装脚本会自动切换到 src/、规范化路径并强制超时(默认 120 秒)。
常用命令:完整套件 scripts/test-with-timeout.sh -- dotnet test --solution src/tfplan2md.slnx;带构建加 --configuration Release --verbosity normal;不构建加 --no-build;超时覆盖 --timeout-seconds 300;单项目 --project tests/Oocx.TfPlan2Md.TUnit/。项目使用 TUnit,用 --treenode-filter 而非 --filter,如 ///MarkdownRendererTests/* 或 ///*/Render_ValidPlan_ContainsSummarySection。
限制:若变更仅涉及 .github/agents/、.github/skills/、.github/copilot-instructions.md 或 docs/ 且无 C# 代码改动,可跳过测试。退出码 124 表示超时,125 表示包装脚本错误。快照变更须走 update-test-snapshots 技能并在提交信息包含 SNAPSHOT_UPDATE_OK。