zoukankan      html  css  js  c++  java
  • VS2010单元测试

    VS2010单元测试

    什么是单元测试

          单元测试就是编写一段代码,用来检查某个特定条件下,另外一段代码的行为是否符合我们的预期。单元测试的代码与实际程序的代码具有同等的重要性。

    每一个单元测试,都是用来定向测试它所对应的一个单元的代码是否正确执行。

    单元测试的代码应该由代码的编写者来完成。

    单元测试的优点

        1,         通过单元测试能够协助程序员尽快找到代码中bug的具体位置,

        2,         而且好的单元测试能够让程序员对自己的程序更有自信。

        3,         能够让程序员在提交项目之前就将代码变得更加的健壮

        4,         能够协助程序员更好的进行开发

        5,         能够向其他的程序员展示你写的程序应该如何调用

        6,         能够让项目主管更了解系统当前的情况

    VS2010中如何进行单元测试

          VS中的测试工具可以对任何类、接口、结构等实体中的字段、属性、构造函数、方法等进行单元测试。

    单元测试分两种:整体测试和单独测试。

      整体测试:如果要对一个类中所有的方法都添加测试用例,可以对类名点右键,这样对类中所有方法自动生成测试方法。

      单独测试:如果只是对类中的某个方法进行单元测试,那么对方法点右键→创建单元测试即可。

    案例:下面我们用一个案例说明如何使用vs中的单元测试。

    步骤一:创建一个名称为TestCase的控制台项目。

    由于该步骤比较简单,这里我们就不再赘述了。

    然后添加一个Calculator类,在类中写一个GetAvg方法

    代码如下:

     

    步骤二:创建单元测试

    接下来,将鼠标放到Calculator类上,然后点击鼠标右键,从菜单项中找到“创建单元测试”项,结果如下图

     

    点击确定后,在新建测试项目中,输入需要创建的单元测试的新项目的名称,然后单击"创建"按钮,则自动创建一个新的单元测试代码项目

     

    步骤三:根据需要修改测试用例

    默认情况下,系统自动生成了测试用例方法,但是不符合我们的需求,我们需要订正。

    针对GetAvg方法我们可以做如下订正。

     

    说明:Assert.AreEqual(expected, actual);

    Assert在这里可以理解成断言:在VSTS里做单元测试是基于断言的测试。

    默认代码中Assert.Inconclusive 表明这是一个未经验证的单元测试。在实际的程序中可以注释掉。

    当然 ,Assert类还有其他方法

    1、Assert类的使用

    Assert.Inconclusive()    表示一个未验证的测试;

    Assert.AreEqual()         测试指定的值是否相等,如果相等,则测试通过;

    AreSame()            用于验证指定的两个对象变量是指向相同的对象,否则认为是错误

    AreNotSame()        用于验证指定的两个对象变量是指向不同的对象,否则认为是错误

    Assert.IsTrue()              测试指定的条件是否为True,如果为True,则测试通过;

    Assert.IsFalse()             测试指定的条件是否为False,如果为False,则测试通过;

    Assert.IsNull()               测试指定的对象是否为空引用,如果为空,则测试通过;

    Assert.IsNotNull()          测试指定的对象是否为非空,如果不为空,则测试通过;

    步骤四:运行单元测试

    通过

     

    菜单项执行调试或者通过

    进行调试。

    步骤五:查看结果

     

    这样我们就完成对GetAvg方法的单元测试。

    最后说下自己碰到的一些问题吧!

    问题:在Win7系统上安装了VS2010和VS2012,但是单元测试结果总是挂起。上网搜索了N久,也没有找到解决方案,最后只能通过Reshapeer插件运行单元测试

     

    当然如果单元测试出错,会有对应的消息

     

    好了,今天对单元测试的讲解就到这里,以后有机会,再来更新后续内容…

     
     
     
  • 相关阅读:
    HDU 1863 畅通工程(Kruskal)
    HDU 1879 继续畅通工程(Kruskra)
    HDU 1102 Constructing Roads(Kruskal)
    POJ 3150 Cellular Automaton(矩阵快速幂)
    POJ 3070 Fibonacci(矩阵快速幂)
    ZOJ 1648 Circuit Board(计算几何)
    ZOJ 3498 Javabeans
    ZOJ 3490 String Successor(模拟)
    Java实现 LeetCode 749 隔离病毒(DFS嵌套)
    Java实现 LeetCode 749 隔离病毒(DFS嵌套)
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3083464.html
Copyright © 2011-2022 走看看