MST
星途 面试题库

面试题:C#中xUnit测试框架的断言使用

在C#的xUnit单元测试框架中,假设你有一个返回整数的方法 `int Add(int a, int b)` 用于计算两数之和。请编写一个xUnit测试用例,使用断言来验证该方法的正确性,并且说明常用的断言方法有哪些及它们的适用场景。
31.3万 热度难度
编程语言C#

知识考点

AI 面试

面试题答案

一键面试

编写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;
    }
}

常用断言方法及适用场景

  1. Assert.Equal
    • 适用场景:用于验证两个值是否相等。适用于比较基本数据类型(如整数、字符串等)以及可比较的对象。例如,验证方法返回值是否与预期值相等,验证两个集合的内容是否相等(前提是集合元素可比较且实现了合适的比较逻辑)。
  2. Assert.NotEqual
    • 适用场景:与Assert.Equal相反,用于验证两个值不相等。常用于确保方法不会返回不期望的值。
  3. Assert.True
    • 适用场景:用于验证一个布尔表达式是否为true。常用于验证条件判断、逻辑运算的结果。比如验证一个字符串是否为空(Assert.True(string.IsNullOrEmpty(str)))。
  4. Assert.False
    • 适用场景:与Assert.True相反,用于验证一个布尔表达式是否为false
  5. Assert.Null
    • 适用场景:用于验证一个对象是否为null。常用于验证方法返回值或者某个变量是否为null,比如验证从数据库查询某个不存在记录时返回的对象是否为null
  6. Assert.NotNull
    • 适用场景:与Assert.Null相反,用于验证一个对象不为null
  7. Assert.Throws
    • 适用场景:用于验证方法是否会抛出指定类型的异常。比如验证当传入非法参数时,某个方法是否会抛出ArgumentException
  8. Assert.DoesNotThrow
    • 适用场景:与Assert.Throws相反,用于验证方法在执行过程中不会抛出异常。