用途:在采用 TUnit 的 .NET 仓库中新增、运行、调试或修复测试,并保持其源码生成与并行执行模型。触发条件包括仓库使用 TUnit、TUnit.Playwright、[Test]、[Arguments]、ClassDataSource,或基于 Microsoft.Testing.Platform 的测试执行。不适用于 xUnit、MSTest 项目,也不适用于无 TUnit 特有机制的通用测试策略。
主要能力:确认项目确实使用 TUnit 而非其他 MTP 框架;按仓库真实命令运行测试;选择合适夹具层级(隔离逻辑用普通 TUnit 测试,HTTP/SignalR/SSE/UI 用共享 AppHost/Aspire 夹具,需要 Host DI、IGrainFactory 等运行时内部时叠加 WebApplicationFactory,浏览器自动化叠加 Playwright);用 ClassDataSource<Fixture>(Shared = SharedType.PerTestSession) 复用昂贵夹具;保持测试与测试模块并行;仅在最小范围、对同一共享状态做破坏性变更且会互相破坏的测试上使用带键的 [NotInParallel("collision-domain")]。
使用方式:从 AGENTS.md 读取真实测试命令,缺失时先用 dotnet test PROJECT_OR_SOLUTION。过滤使用 --treenode-filter,而非 VSTest 的 --filter;.NET 10 直接传 MTP 开关,旧 SDK 可能需要 --。示例:dotnet test --project tests/MyProject.Tests/MyProject.Tests.csproj --treenode-filter "///CalculatorTests/";按类别过滤 --treenode-filter "////*[Category=Integration]";覆盖率 dotnet test --solution MySolution.sln --coverage --coverage-output coverage.cobertura.xml --coverage-output-format cobertura。若尚未配置,可用 rg 检测状态,再执行 dotnet add TEST_PROJECT.csproj package TUnit,不要添加 Microsoft.NET.Test.Sdk。
限制与输出预算:保持内置分析器启用;不要添加 --max-parallel-test-modules 1、TUNIT_MAX_PARALLEL_TESTS=1、[assembly: NotInParallel] 或类级 [NotInParallel] 等全局限制;共享夹具需并发安全且每个测试使用独立可变状态。失败时展示失败测试、根异常与相关栈帧,去重并将诊断响应限制在 80 行或 8 KiB;不要自动倾倒 stdout/stderr、主机日志、浏览器控制台、DOM/HTML、TRX 或崩溃产物。若仓库统一使用 xUnit 或 MSTest,返回 not_applicable,除非明确要求迁移。