• 单元测试基础篇VS2008


    VS2008 Professional版本已经集成单元测试的功能,我们可以很方便地对我们的代码进行单元测试。

    新建一个单元测试工程:

     

    添加对要测试的工程的引用,之后就可以针对被测试工程进行测试代码的编写了。

     

    单元测试工程会默认生成一个单元测试类,其中属性TestClass标识这个类为单元测试类  

    1 [TestClass]
    2 public class UnitTest1
    3 {
    4 
    5 }

     

    (1)      单元测试方法

    单元测试方法用属性TestMethod标识,是针对每个测试用例编写的测试方法。单元测试还有一些常用的属性标签:Ignore标签表示单元测试运行时忽略当前方法,当单元测试方法未完成时,可添加此标签,暂时不运行当前方法;Description标签为当前测试方法添加说明。

    1 [TestMethod]
    2 public void TestMethod1
    3 {
    4 
    5 }
     
     
    在测试方法中,使用Assert断言方法对实际值和预期值进行对比,最常用的是预期值和实际值是否相等的断言。
    Assert.AreEqual(6, Count);
    还可以通过给方法添加ExpectedException属性来断言预期的异常:
    [ExpectedException(typeof(ArgumentNullException))]

    (2)      系统方法

    单元测试运行时,用户可能需要统一初始一些变量或者测试结束统一释放占用资源,而不必在每个测试方法中初始化和资源回收。vs单元测试中提供了这样的属性

    签。

    1.       ClassInitialize

    如果方法标识了这个属性。则这个方法在整个测试class运行开始时候运行。可以在这个方法中添加所有测试方法都需要初始化的初始化代码。 

    TestContext中包含了单元测试的基本信息。

     

     

    1 [ClassInitialize()]
    2 public static void MyClassInitialize(TestContext testContext){ }
     
     
    2.       ClassCleanup
    标识了这个属性的方法会在这个测试class运行结束的时候运行,和上一个标签对应。 

    3.       TestInitialize

    1 [ClassCleanup()]
    2 public static void MyClassCleanup(){ }
     
     
    除了在整个测试class的开始和结束运行的方法外,还有针对每个测试方法的开始和结束的方法。有时候需要对测试方法用的实例进行必要的初始化,但是需要保证每个方法用的的实例和其他方法中的实例无关的,则需要在每个方法的开始初始化实例,在结束的时候恢复对实例的修改。
    标识TestInitialize的方法会在每个测试方法开始之前运行。
    1 [TestInitialize()]
    2 public void MyTestInitialize() { }
    4.       TestCleanup
    标识TestInitialize的方法会在每个测试方法结束之后运行。
    1 [TestCleanup()]
    2 public void MyTestCleanup() { }
     测试代码完成后,可在测试代码文件中右键菜单中点击运行测试代码,也可以把测试工程设置为项目的启动项,按F5直接运行测试工程,调试测试代码。

     

     

    会得到如下的测试运行结果。

    红色部分为未通过的测试代码。

    一般的单元测试要求一定的代码覆盖率,可以用如下的方式查看测试代码的覆盖率:

    (1)    新建单元测试工程时,会自动在项目中生成如下的文件

    双击这个文件,会弹出如下的对话框

    选择Code Coverage,选中要查看覆盖率的工程,然后关闭对话框。

     

    (2)    运行测试工程,查看覆盖率。

    点击运行结果窗口上的覆盖率查看按钮,可以查看针对每个方法的覆盖率。

    Vs2008集成的单元测试工具使用非常方便,是我们软件开发中不可或缺的工具之一,熟练运用能极大地提高我们软件开发的质量。

     

     一个单元测试类中包含有如下的内容:

  • 相关阅读:
    0/1背包问题
    假如爱有天意(中文版)
    tomcat集群
    分布式锁
    centos7安装Harbor(转载)
    isEmpty和isBlank的区别
    单体应用架构和分布式架构的比较
    微服务鉴权
    mysql的时区设置
    RSA非对称加密算法
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1768250.html
Copyright © 2020-2023  润新知