csharp-tunit 是做什么的?
获取 TUnit 单元测试的最佳实践,包括数据驱动测试。
简介
本技能为使用 TUnit 框架编写 .NET 单元测试提供最佳实践指南。TUnit 是一个现代化的测试框架,支持属性化测试、数据驱动测试和异步测试,帮助开发者编写简洁、可维护且高效的测试代码。
数据驱动测试
TUnit 支持通过 [Arguments] 属性或其他数据源(如方法、类或外部文件)实现数据驱动测试。以下是一个基本示例:
using TUnit;
public class CalculatorTests
{
[Test]
[Arguments(1, 2, 3)]
[Arguments(0, 0, 0)]
[Arguments(-1, 1, 0)]
public async Task Add_TwoNumbers_ReturnsSum(int a, int b, int expected)
{
var result = a + b;
await Assert.That(result).IsEqualTo(expected);
}
}
使用外部数据源
你可以从方法、类或文件(如 JSON、CSV)中提供数据:
public static class TestData
{
public static IEnumerable<object[]> GetData()
{
yield return new object[] { 1, 2, 3 };
yield return new object[] { 0, 0, 0 };
yield return new object[] { -1, 1, 0 };
}
}
public class CalculatorTests
{
[Test]
[MethodDataSource(typeof(TestData), nameof(TestData.GetData))]
public async Task Add_TwoNumbers_ReturnsSum(int a, int b, int expected)
{
var result = a + b;
await Assert.That(result).IsEqualTo(expected);
}
}
最佳实践
- 保持测试独立:每个测试应独立于其他测试,避免共享状态。
- 使用有意义的名称:测试方法名应清晰描述被测行为和预期结果。
- 利用数据驱动测试:减少重复代码,提高覆盖率。
- 异步测试:TUnit 原生支持异步测试,使用
async Task方法。 - 分组和分类:使用
[Category]属性对测试进行分组,便于筛选和运行。
平台支持
该技能适用于 Claude Code、Cursor、Codex 等 AI 编码助手,在 .NET 项目中提供实时指导。