csharp-xunit 是做什么的?
获取 XUnit 单元测试的最佳实践,包括数据驱动测试。
概述
该技能提供使用 XUnit 框架进行 C# 单元测试的指导,涵盖从基础测试编写到高级特性(如数据驱动测试)的实践。
数据驱动测试
数据驱动测试允许您使用不同的输入数据运行相同的测试逻辑。XUnit 提供了多种实现方式:
[Theory]属性用于标记数据驱动的测试方法。[InlineData]属性允许您直接内联多个数据集合。[MemberData]属性引用类中的静态属性或方法提供数据。[ClassData]属性引用实现了IEnumerable<object[]>的单独类。
示例:使用 InlineData
public class CalculatorTests
{
[Theory]
[InlineData(1, 2, 3)]
[InlineData(-1, -2, -3)]
[InlineData(0, 0, 0)]
public void Add_ReturnsCorrectSum(int a, int b, int expected)
{
var calculator = new Calculator();
var result = calculator.Add(a, b);
Assert.Equal(expected, result);
}
}
示例:使用 MemberData
public class CalculatorTests
{
public static IEnumerable<object[]> TestData =>
new List<object[]>
{
new object[] { 1, 2, 3 },
new object[] { -1, -2, -3 },
new object[] { 0, 0, 0 }
};
[Theory]
[MemberData(nameof(TestData))]
public void Add_ReturnsCorrectSum(int a, int b, int expected)
{
var calculator = new Calculator();
var result = calculator.Add(a, b);
Assert.Equal(expected, result);
}
}
最佳实践
- 保持测试的单一职责:每个测试方法只验证一个行为。
- 使用有意义的测试方法名称,遵循
MethodName_StateUnderTest_ExpectedBehavior模式。 - 利用
[Fact]和[Theory]属性选择合适的测试类型。 - 避免在测试中使用条件逻辑,确保测试结果可预测。
- 运行测试时使用
dotnet test命令。
支持的平台
该技能适用于任何支持 .NET 和 XUnit 的开发环境,包括 Visual Studio、VS Code 和 JetBrains Rider。