SuperAPI AI 工具集

xunit-skill

测试与质量

查看项目

更新于 10-15 15:17

技能介绍

用途

xUnit.net Testing Skill 是一个面向 C# 的测试生成技能,用于按 xUnit.net 约定生成单元测试代码。当用户提及 "xUnit"、"[Fact]" 等内容时触发使用。

主要能力

基础测试(Fact) 使用 [Fact] 标记无参数测试方法,通过 Assert 类进行断言,例如 Assert.Equal、Assert.Throws。

参数化测试(Theory) 使用 [Theory] 配合数据源实现多组输入共用同一测试逻辑:

  • [InlineData(2, 3, 5)] 直接标注数据
  • [MemberData(nameof(GetTestData))] 引用返回 IEnumerable<object[]> 的静态成员
  • [ClassData(typeof(CalculatorTestData))] 引用数据类

断言 技能提供常用断言写法:Assert.Equal、Assert.NotEqual、Assert.True、Assert.False、Assert.Null、Assert.NotNull、Assert.Contains、Assert.DoesNotContain、Assert.Empty、Assert.Single、Assert.Collection、Assert.IsType、Assert.Throws(可读取异常的 Message)、Assert.InRange。

共享上下文(IClassFixture) 通过实现 IDisposable 的 Fixture 类(如数据库连接)在多个测试间共享上下文,测试类实现 IClassFixture<T> 并通过构造函数注入获取 Fixture 实例,Dispose 中释放资源。

每测试 Setup/Dispose 测试类实现 IDisposable:构造函数作为 SetUp,Dispose 方法作为 TearDown,实现单个测试级别的资源管理。

使用方式

安装测试依赖: dotnet add package xunit xunit.runner.visualstudio Microsoft.NET.Test.Sdk

运行测试: dotnet test 或按限定名过滤运行: dotnet test --filter "FullyQualifiedName~Calculator"

反模式

技能列出以下应避免的写法及对应改进:

  • 带参数的 [Fact] → 应改用 [Theory] + [InlineData],符合 xUnit 约定
  • 静态状态 → 应改用 IClassFixture,保证测试隔离
  • 未实现 IDisposable → 应实现以进行资源清理

适用场景

适用于在 .NET / C# 项目中编写与运行 xUnit.net 单元测试,包括基础断言、参数化数据驱动测试、共享 Fixture 以及测试资源清理。

限制

资料中未提及该技能的价格、收费、授权方式、支持平台范围及具体效果数据,这些信息暂未提供。资料中提到的进阶模式、调试指南、CI/CD 集成与最佳实践指向 reference/playbook.md,但未给出其内容。