C#的单元测试

打印 上一主题 下一主题

主题 986|帖子 986|积分 2958

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1. 基本结构
using Microsoft.VisualStudio.TestTools.UnitTesting;
[TestClass]
public class CalculatorTests
{
    [TestMethod]
    public void Add_TwoNumbers_ReturnsSum()
    {
        // Arrange
        Calculator calc = new Calculator();
        
        // Act
        int result = calc.Add(2, 3);
        
        // Assert
        Assert.AreEqual(5, result);
    }
}
2. 主要特性标签



  • [TestClass] - 标记这是一个测试类


  • [TestMethod] - 标记这是一个测试方法


  • [TestInitialize] - 每个测试方法实行前运行


  • [TestCleanup] - 每个测试方法实行后运行


  • [ClassInitialize] - 类中全部测试实行前运行一次


  • [ClassCleanup] - 类中全部测试实行后运行一次
3.常用断言方法

// 相等性测试
Assert.AreEqual(expected, actual);
Assert.AreNotEqual(notExpected, actual);
// 引用测试
Assert.AreSame(expected, actual);
Assert.AreNotSame(notExpected, actual);
// null测试
Assert.IsNull(actual);
Assert.IsNotNull(actual);
// 布尔测试
Assert.IsTrue(condition);
Assert.IsFalse(condition);
// 非常测试
[TestMethod]
[ExpectedException(typeof(DivideByZeroException))]
public void Divide_ByZero_ThrowsException()
{
    Calculator calc = new Calculator();
    calc.Divide(5, 0);
}
4. 相关案列
Assert.Empty这是Assert的一个方法,用于查抄给定的集合、数组或序列是否为空。如果集合不为空,测试将失败。
Assert.Single用于验证集合、数组或序列中是否恰好包含一个元素。如果集合中元素数量不是 1,测试将失败。

5.测试属性
[Theory]
[Theory] 属性用于标记一个测试方法,表明该方法是一个参数化测试的理论。
与[Fact]属性不同,[Fact]属性标记的测试方法不担当任何外部参数
而且总是实行相同的测试逻辑,
而[Theory]属性标记的测试方法可以担当来自外部数据源的参数,
并针对不同的参数值实行多次测试。
[Theory]测试方法通常与[InlineData]、[ClassData]、[MemberData]等属性一起使用,以提供测试数据。
InlineData  它允许你在测试方法上直接提供测试数据。这种方式使得你可以轻松地为测试方法指定多个参数集,而无需创建额外的数据源。每个使用 InlineData 提供的参数集都会导致测试方法被实行一次。InlineData通常用于提供少量的、简单的测试数据。如果必要提供大量的测试数据或更复杂的数据集,可以考虑使用 [MemberData] 或 [ClassData]。
ClassData 它允许你从类或静态方法提供的数据源中动态获取测试数据。这种方式特殊适用于必要提供大量测试数据或数据生成逻辑较复杂的场景。通过 ClassData,你可以将测试数据与测试方法分离,使得测试代码更加清晰和可维护
MemberData 它允许测试方法从类的成员(如属性或方法)中获取测试数据。这种方式使得测试方法能够针对多种不同的输入数据进行重复实行,从而验证代码在不同条件下的行为。
    // 验证效果
    Assert.NotNull(aa);                                           // 确保效果不为空
    Assert.Equal(expected.TotalCount, aa.TotalCount);            // 验证总数量
    Assert.Equal(expected.bb.Count(), aa.bb.Count()); // 验证效果数量
    Assert.Distinct(aa.bb);                                // 验证效果无重复
    Assert.Equal(expected.bb.ToArray(), aa.bb.ToArray()); // 验证效果内容
6.Collection
[CollectionDefinition(aaaaCollection")] 是C#中用于界说测试集合的一个特性(Attribute)标记。在.NET的单元测试中,特殊是使用xUnit测试框架时,这个特性允许你界说一个测试集合(Collection),这对于必要共享测试环境或资源的测试来说非常有效。




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

耶耶耶耶耶

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表