SuperAPI AI 工具集

dotnet-xunit

测试与质量

查看项目

更新于 10-15 19:47

技能介绍

用途:面向 .NET 项目编写 xUnit 测试,重点讲解 xUnit v3(.NET 8.0+ 基线),并内联标注与 v2 行为不同的兼容性说明。

主要能力:

  • [Fact] 单用例;[Theory] 参数化,支持 [InlineData]、[MemberData](TheoryData<T>)、[ClassData](v3 用强类型 TheoryDataRow<T>,v2 用 IEnumerable<object[]>)。
  • 夹具:IClassFixture<T> 用于单个测试类内共享昂贵资源,ICollectionFixture<T> 配合 [CollectionDefinition] 跨测试类共享。
  • IAsyncLifetime 实现异步初始化/清理;v3 返回 ValueTask,v2 返回 Task。
  • 并行执行:默认不同集合并行、集合内顺序;可用 DisableParallelization 或 xunit.runner.json(parallelizeAssembly、parallelizeTestCollections、maxParallelThreads)控制。
  • 输出与断言:ITestOutputHelper 采集诊断输出,可桥接 ILogger;支持自定义断言,v3 新增 Assert.Multiple,且移除了 Assert 方法的消息参数,需用 Assert.Fail() 显式提示。
  • xunit.analyzers 在编译期捕获常见测试编写错误,可用 .editorconfig 调整规则严重级别。

必要用法:测试方法返回 Task/ValueTask 而非 async void;夹具类需 public;[Collection] 必须与对应 [CollectionDefinition] 匹配;[Fact] 与 [Theory] 不可混用。

适用场景:单元测试与参数化测试、需要共享数据库连接或配置的测试类/集合、异步 setup/teardown、并行策略调整与测试诊断。

限制:不做测试项目脚手架、包引用与 Directory.Build.props(由 dotnet-add-testing 负责);不涉及测试策略与测试类型选择、集成测试模式(WebApplicationFactory、Testcontainers);需 .NET 8.0+ 基线以支持 v3。包与运行器差异:v3 使用 xunit.v3、xunit.runner.visualstudio 3.x,断言独立为 xunit.v3.assert。