在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

asp.net单元测试及查看代码覆盖率详细示例的更多相关文章

  1. 使用VS2015(c#)进行单元测试,显示测试结果与查看代码覆盖率

    创建测试的过程可参考如下链接 http://www.cnblogs.com/libaoquan/p/5296384.html (一)如何使用VS2015查看测试结果 问题描述:使用VS2010执行单元 ...

  2. Visual Studio 2010 单元测试--运行测试并查看代码覆盖率

    原文:Visual Studio 2010 单元测试--运行测试并查看代码覆盖率 运行测试并查看代码覆盖率对程序集中的代码运行测试时,可以通过收集代码覆盖率数据来查看正在测试的项目代码部分. 运行测试 ...

  3. asp.net core系列 39 Razor 介绍与详细示例

    原文:asp.net core系列 39 Razor 介绍与详细示例 一. Razor介绍 在使用ASP.NET Core Web开发时, ASP.NET Core MVC 提供了一个新特性Razor ...

  4. [转]Visual Studio 2010单元测试(2)--运行测试并查看代码覆盖率

    Visual Studio 2010 单元测试--运行测试并查看代码覆盖率 运行测试并查看代码覆盖率对程序集中的代码运行测试时,可以通过收集代码覆盖率数据来查看正在测试的项目代码部分. 运行测试并查看 ...

  5. 【第四篇】ASP.NET MVC快速入门之完整示例(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  6. 【极力分享】[C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例【转载自https://segmentfault.com/a/1190000004152660】

      [C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例 本文我们来学习一下在Entity Framework中使用Cont ...

  7. ZjDroid工具介绍及脱壳详细示例

    前提条件: 1.Root手机一部 2.需要通过Xposed installer(http://dl.xposed.info/latest.apk)安装Xposed Framework; 一.ZjDro ...

  8. Java单元测试(Junit+Mock+代码覆盖率)---------转

    Java单元测试(Junit+Mock+代码覆盖率) 原文见此处 单元测试是编写测试代码,用来检测特定的.明确的.细颗粒的功能.单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的. 单元测 ...

  9. Jedis API 详细示例

    Jedis API 详细示例 https://www.jianshu.com/p/125357ee7651

随机推荐

  1. canvas知识点积累

    fillRect(x,y,width,height) 填充一个矩形区域,绘制已填色的矩形,默认填充颜色为黑色.x:矩形左上横坐标,y:矩形左上纵坐标,width:矩形宽度,height:矩形高度. s ...

  2. YAML文件中在单一文件中区分多个文件

    1.在单一文件中,可用连续三个连字号(---)区分多个文件. 2.另外,还有选择性的连续三个点号( ... )用来表示文件结尾. 题外:YAML其实语法很多也很灵活,但是针对Spring支持的语法其实 ...

  3. RX库中的IDisposable对象

    IDisposable是.net中的主动资源释放接口,它是在编程过程中经常使用到的一个接口,本文介绍一下微软在Rx.NET中提供的一系列常用的Disposable类,通过它们可以简化我们的程序代码,提 ...

  4. fritshoogland 大神ORACLE :pga-memory-operation latch

    https://fritshoogland.wordpress.com/2017/03/01/oracle-12-2-wait-event-pga-memory-operation/#comment- ...

  5. 体验h5离线缓存

    摘要 Application Cache是浏览器自己的一种机制,随着移动互联网时代的到来,如果我们已经将需要的文件缓存下下来,一旦网络无法访问,也能继续访问.不仅能提高用户体验,而且在有网络时,也能直 ...

  6. 移植Python2到TQ2440

    环境 Python:2.7.13 开发板: TQ2440 工具链: arm-none-linux-gnueabi-gcc 4.8.3 概述 前面已经把Python3移植到TQ2440上面的,现在我们移 ...

  7. AngularJS中module的导入导出

    关于AngularJS中module的导入导出,在Bob告诉我之前还没写过,谢谢Bob在这方面的指导,给到我案例代码. 在AngularJS实际项目中,我们可能需要把针对某个领域的各个方面放在不同的m ...

  8. 在ASP.NET MVC下实现树形导航菜单

    在需要处理很多分类以及导航的时候,树形导航菜单就比较适合.例如在汽车之家上: 页面主要分两部分,左边是导航菜单,右边显示对应的内容.现在,我们就在ASP.NET MVC 4 下临摹一个,如下: 实现的 ...

  9. Delphi XE 6,Rad Studio XE 6 官方下载(附破解)

      官方光盘镜像下载: http://altd.embarcadero.com/download/radstudio/xe6/delphicbuilder_xe6_win.iso RAD Studio ...

  10. C#编程(二十九)----------泛型接口

    泛型接口 定义 先来看一个简单的例子: public class Sharp {} public class Rectangle:Sharp {} 上面定义了两个简单的类,一个是图形类,一个是矩形类; ...