编写xUnit测试用例
using Xunit;
public class MathTest
{
[Fact]
public void Add_ShouldReturnCorrectSum()
{
// Arrange
var math = new MathOperations();
int a = 3;
int b = 5;
// Act
int result = math.Add(a, b);
// Assert
Assert.Equal(8, result);
}
}
public class MathOperations
{
public int Add(int a, int b)
{
return a + b;
}
}
常用断言方法及适用场景
Assert.Equal
:
- 适用场景:用于验证两个值是否相等。适用于比较基本数据类型(如整数、字符串等)以及可比较的对象。例如,验证方法返回值是否与预期值相等,验证两个集合的内容是否相等(前提是集合元素可比较且实现了合适的比较逻辑)。
Assert.NotEqual
:
- 适用场景:与
Assert.Equal
相反,用于验证两个值不相等。常用于确保方法不会返回不期望的值。
Assert.True
:
- 适用场景:用于验证一个布尔表达式是否为
true
。常用于验证条件判断、逻辑运算的结果。比如验证一个字符串是否为空(Assert.True(string.IsNullOrEmpty(str))
)。
Assert.False
:
- 适用场景:与
Assert.True
相反,用于验证一个布尔表达式是否为false
。
Assert.Null
:
- 适用场景:用于验证一个对象是否为
null
。常用于验证方法返回值或者某个变量是否为null
,比如验证从数据库查询某个不存在记录时返回的对象是否为null
。
Assert.NotNull
:
- 适用场景:与
Assert.Null
相反,用于验证一个对象不为null
。
Assert.Throws
:
- 适用场景:用于验证方法是否会抛出指定类型的异常。比如验证当传入非法参数时,某个方法是否会抛出
ArgumentException
。
Assert.DoesNotThrow
:
- 适用场景:与
Assert.Throws
相反,用于验证方法在执行过程中不会抛出异常。