用途:为 NUnit 测试套件的架构与 fixture 行为提供设计指导,覆盖 API、组件和集成三类范围。先锁定运行约束:Docker 可用性、目标框架、明确排除的测试套件。
主要能力:设计 fixture 组合与生命周期;非平凡初始化时分离 fixture 类(依赖装配与 Given 辅助)与测试类(NUnit 生命周期与断言);按 controller 或端点族分组全周期 API 测试,每个族自持数据库容器、迁移、HTTP 桩、WebApplicationFactory 和客户端;用 [FixtureLifeCycle(LifeCycle.InstancePerTestCase)] 配合 [Parallelizable],fixture 级并行安全,但共享 WireMock 桩、客户端或可变运行时状态时不要开启子测试并行;[SetUp] 重置可变状态,[OneTimeTearDown] 释放所拥有基础设施;数据库引导先启动容器,再按顺序以一次性容器运行各迁移集并要求退出码 0,最后检查必需表;健康端点用 [Test] + [TestCase] + [CancelAfter(...)],方法签名 (string url, CancellationToken cancellationToken);用 Assert.Multiple 或 Assert.EnterMultipleScope 组织相关断言,用 TestContext.Progress 或 fixture 诊断提供更多上下文。
使用方式:按工作流先界定边界与依赖,再选择 fixture 组合与生命周期,实现目标层场景测试,选择真实依赖或替身及容器拓扑,补充异步与最终一致性断言,调优 CI 并行与分片,最后通过 build-test 反馈目标验证变更套件,并记录 SDK、runner 模式、目标框架、过滤条件、发现/执行/跳过计数、结果路径与容器或桩诊断。若涉及 dotnet test、Microsoft.Testing.Platform、global.json、适配器或覆盖率/日志开关,先确认仓库当前的 runner 模式并查阅现行一手来源。
适用场景:测试套件架构、fixture 设计、Testcontainers 与 WireMock 接入、减少 CI 抖动。
限制:不用于通用服务实现或 CI 图重构;若问题在于 dotnet test/MTP/VSTest runner 模式不匹配、覆盖率收集器接线或 CI 目标图,应转 ops-nuke-cicd,不要改测试文件来修 runner 漂移;若任务为实现或修复被测生产代码,转 software-csharp-backend;浏览器/E2E 套件(Playwright、Selenium)不在此范围;原因不明的抖动应先加诊断、确定性复现,不能静默加 [Retry] 掩盖。排除依赖基础设施的套件时,先运行可行类别并如实报告未验证部分。版本、适配器、runner 模式和覆盖率事实属易变现行状态,需在 NuGet 上核查当前版本后再固定。部分具体实现细节暂未提供。