• asp.net单元测试及查看代码覆盖率详细示例


    在vs2008中创建单元测试

    一,打开vs2008,创建一个类库VSTSDemo。
    因为我在学习的时候用的就是vs2008,其它版本的vs,方法应该差不多,大家自己研究吧 :)

    删除掉默认生成的类,然后创建一个LogonInfo类,然后我们在这个类中写一个很简单的获取最大值的方法GetMax(int[] aryNum).方法的代码如下:

    namespace VSTSDemo
    {
        public class LogonInfo
        {
            public int GetMax(int[] aryNum)
            {
                if (aryNum == null || aryNum.Length == 0)
                {
                    return -1;
                }

                if (aryNum.Length == 1)
                {
                    return aryNum[0];
                }

                int n = aryNum[0];
                for (int i = 1; i < aryNum.Length; i++)
                {
                    if (aryNum[i] > n)
                    {
                        n = aryNum[i];
                    }
                }

                return n;
            }
        }
    }
    这个方法就不解释了,很简单,应该一看就明白。它的功能就是从aryNum数组中找出最大的一个值。

    二,创建单元测试项目
    将鼠标移动到GetMax类名上面,右键,选择选项,创建单元测试,如下图:


    这时候会弹出一个"创建单元测试"的操作框,我们直接点确定,然后输入新项目的名称LogonInfoTest,如下图:


    确定完成后,vs会自动生成LogonInfoTest测试项目与一个Solution Items文件夹,且自动在LogonInfoTest项目下生成一个LogonInfoTest.cs文件,如下图:

     

    注意:上面代码中的 Assert.Inconclusive("验证此测试方法的正确性") 是我手动注释掉了。这行会默认生成,但没有什么用。如果不想默认生成,可以在创建单元测试时点击设置,把默认生成这一行代码的选项勾掉。

    三,开始测试方法LogonInfo
    在开始测试前,我们需要改写一下GetMaxTest()方法

    /// <summary>
    ///GetMax 的测试
    ///</summary>
    [TestMethod()]
    public void GetMaxTest()
    {
        LogonInfo target = new LogonInfo();
        int[] aryNum = new int[] { 1, 3, 4 }; // 这里为aryNum赋一个初始值
        int expected = 4; // 这里设置是GetMax方法预期值,从上面的初始值及GetMax方法的本意我们知道预期值应该是4
        int actual;
        actual = target.GetMax(aryNum);
        Assert.AreEqual(expected, actual); //这里判断expected与actual是否相等,如果相等,则判定测试成功,反之失败
        //Assert.Inconclusive("验证此测试方法的正确性。");
    }
    注意Assert.AreEqual(expected, actual)这一行代码,Assert.AreEqua是测试expected和actual是不是相等,相等就认为成功,不相等就认为失败。同样用来判定的方法共有以下几个:
    Assert.AreEqual() 测试指定的值是否相等,如果相等,则测试通过;
    Assert.Inconclusive() 表示一个未验证的测试;
    Assert.IsTrue() 测试指定的条件是否为True,如果为True,则测试通过;
    Assert.IsFalse() 测试指定的条件是否为False,如果为False,则测试通过;
    Assert.IsNull() 测试指定的对象是否为空引用,如果为空,则测试通过;
    Assert.IsNotNull() 测试指定的对象是否为非空,如果不为空,则测试通过;

    代码改写完成后,我们打开vs菜单上的"测试"->"窗口"->"测试视图",会出现测试视图窗口,如下图:


    在测试视图窗口中列出了所有我们创建的测试方法,鼠标移动到GetMaxTest方法上面,在右键中选择"运行选定内容",测试就开始啦。测试的结果会显示在"测试结果"的窗口中,如下图:


    从上面的结果我们就可以知道方法测试是否通过了。然后我们也可以改变测试方法GetMaxTest()中的初始值与预期值,再次运行测试方法查看测试结果。


    代码覆盖率

    代码覆盖率指的就是在运行测试案例时,案例运行时所执行的代码范围程度。代码覆盖率越高,说明案例越好。被测代码中每个可执行语句都被执行到了,测试出来的结果也就是越稳定。比如,在单元测试中,代码覆盖率必须达到80%或90%,这样,就要求我们好好编写测试案例了。

    那么要如何查看代码的覆盖率呢?我们双击文件夹Solution Items下的LocalTestRun.testrunconfig文件。在弹出来的窗口中来设置要查看代码覆盖率的方法,如下图:


    运行测试方法后,我们打开vs菜单上的"测试"->"窗口"->"代码覆盖率结果"窗口,在窗口中双击要查看代码覆盖率的方法,如下图:


    覆盖率的结果如下图:


    其中橙色的代码表示部分执行了,红色代码表示没有执行,蓝色代码表示全部执行了。当然,这个颜色可以在"工具"->"选项"->"字体和颜色"中自定义。

    本文来自:.Net学习网 http://www.lmwlove.com/ac/ID858

  • 相关阅读:
    Job流程:Shuffle详解
    学Python Django学得很迷茫,怎么办?-转自知乎
    URL补充
    创建多对多以及增加示例
    Day20-初识Ajax
    笔记-自己看Day20-待续
    Day20-单表中获取表单数据的3种方式
    Day19内容回顾
    一点疑惑的解释
    python os.path模块常用方法详解
  • 原文地址:https://www.cnblogs.com/tianguook/p/3998131.html
Copyright © 2020-2023  润新知