C#单元测试(1)

Table of Contents

1 什么是单元测试

简单来说,单元测试就是检查一个方法执行后的结果是否与预期的一致。

2 常见的单元测试框架

  1. NUnit,是xUnit家族中的一员,有java版的JUnit,NUnit是专门针对.net平台的单元测试框架,它的最大优点是免费,轻量和节约内存,它不需要借助IDE就可以直接运行。
  2. vsUnit,是Visual Studio集成的单元测试框架,它的最大优点是与vs集成,受IDE内部支持。另外还提供了丰富的断言和属性。这篇文章主要就是以vsUnit为例来总结。

3 如何使用VS自带的单元测试框架(vsUnit)进行单元测试

使用vs自带的单元测试框架创建单元测试可以总结为以下几个步骤:

3.1 第1步:创建一个类库项目并写好待测试的方法(或称为函数)

3.2 第2步:在待测试的方法上右击,选择”创建单元测试”选项,如图。

UnitTest1.png

3.3 第3步:打开创建单元测试窗口,可以看到我们选择的待测试方法已经选中了,点击确定。

UnitTest2.png

3.4 第4步:输入新工程的名称,点击确定

UnitTest3.png

3.5 第5步:这样,vs就为我们生成了一个单元测试的框架,看一下生成的测试代码。

UnitTest4.png

生成的工程,并添加了对Microsoft.VisualStudio.QualityTools.UnitTestFramework程序集的引用,我们所有的测试API都定义在这个dll中。

UnitTest5.png

图为生成的测试代码,可以看到vs自动给类添加了TestClass特性,给方法添加了TestMethod特性。

3.6 第6步:编写测试代码,并用断言Assert判断测试是否通过。代码如下。

[TestMethod()]
public void AddTest()
{
    Class1 target = new Class1(); // TODO: Initialize to an appropriate value
    double d1 = 2F; // TODO: Initialize to an appropriate value
    double d2 = 3F; // TODO: Initialize to an appropriate value
    double expected = 5F; // 期望值
    double actual;
    actual = target.Add(d1, d2);//实际值
    Assert.AreEqual(expected, actual);//利用断言判断实际值是否与期望值一致,如果一致则测试通过,否则失败
}

3.7 第7步:运行单元测试。有两种方式,一种是在方法上右键选择运行“测试”,第二种方法是利用测试视图。

3.7.1 方法一:在方法上右键选择

UnitTest6.png

3.7.2 方法二:利用测试视图

UnitTest7.png

3.8 第8步:查看测试结果,可以通过测试结果窗口查看,如图所示,如果为passed表示测试通过,如果为failed则表示测试失败。

UnitTest8.png

4 参考链接