SuperAPI AI 工具集

xunit

测试与质量

查看项目

更新于 10-15 21:49

技能介绍

用途:xUnit.net 是现代开源 .NET 单元测试框架,适用于 C# 与 ASP.NET Core 的现代单元测试,也是社区偏好的测试框架。本技能用于在编写 C# 单元测试、测试 ASP.NET 应用等场景中提供测试编写协助。

主要能力:

  1. 每个测试方法都会新建测试类实例,保证测试之间无状态污染。
  2. [Fact] 用于始终成立的不变条件测试;[Theory] 用于跨数据集运行的参数化测试。
  3. 通过 [InlineData]、成员数据、类数据源为 Theory 提供数据。
  4. 以标准 C# 构造函数和 IDisposable 替代 [SetUp] 特性进行测试初始化。
  5. 使用 IClassFixture<T> 在测试间共享昂贵初始化(如数据库、Web 测试服务器),且不使用静态状态。

必要用法: 测试类中使用 using Xunit;,方法标注 [Fact] 或 [Theory],断言使用 Assert.Equal(expected, actual) 等。共享夹具实现 IDisposable,测试类继承 IClassFixture<T> 并在构造函数注入夹具。日志通过构造函数注入 ITestOutputHelper 后调用 WriteLine,而非 Console.WriteLine。使用 dotnet test 运行,可用 --filter FullyQualifiedName~来筛选测试。

最佳实践:用构造函数做 Setup、Dispose() 做 Teardown(或实现 IAsyncLifetime);用 IClassFixture<T> 共享重依赖;异步测试必须返回 async Task 而非 async void;利用默认的测试集合并行化。

限制与注意:不要在测试类中使用静态变量,因为测试类并行运行会产生竞态;不要用 Assert.True(x == y),改用 Assert.Equal 以获得更好的失败差异信息;async void 测试异常会导致测试运行器崩溃。资料未提供安装命令与版本信息。