在VS2010中,单元测试的功能很强大,使得建立单元测试和编写单元测试代码,以及管理和运行单元测试都变得简单起来,通过私有访问器可以对私有方法也能进行单元测试,并且支持数据驱动的单元测试。

一、创建单元测试

1、在被测试方法体内的右键菜单中选择“创建单元测试”。

2、在弹出的窗体中,被测试方法被勾选,此处也可以勾选其他的方法,点击“确定”。

3、在“新建测试项目”窗体中,输入测试项目的名称,点击“创建”。

4、解决方案中增加了单元测试项目和相应地配置文件。

二、编写测试代码(以2013.8.29的“求解三角形顶点坐标”算法为例)

1、测试代码说明

  经过上述步骤,自动生成的单元测试代码为:

  目前只需要关注GetVertexTest()方法即可,其中:

    前四行代码用于初始化被测试方法的参数。

    TwoDimPoint[] expected = null;  //定义方法的期望结果

    TwoDimPoint[] actual;  //定义方法的实际结果  

    Assert.AreEqual(expected, actual);  //断言期望结果与实际结果一致

    Assert.Inconclusive("验证此测试方法的正确性。");  //表明这是一个未经验证的单元测试。

2、编写“求解三角形顶点坐标”方法的单元测试方法

  单元测试的基本方法是调用被测代码的函数,输入函数的参数值,获取返回结果,然后与预期测试结果进行比较,如果相等则认为测试通过,否则认为测试不通过。“求解三角形顶点坐标”的单元测试代码如下:

[TestMethod()]
public void GetVertexTest()
{
TwoDimPoint p1 = null;
TwoDimPoint p2 = null;
double len = 0;
double angle = 0;
TwoDimPoint[] expected = null;
TwoDimPoint[] actual; #region 测试p0和p1点距离为0的情况 p1 = new TwoDimPoint(3, 5);
len = 0;
expected = new TwoDimPoint[1];
expected[0] = new TwoDimPoint(p1);
actual = Triangle.GetVertex(p1, p2, len, angle);
Assert.AreEqual(expected.Length, actual.Length);
Assert.AreEqual(expected[0].X, actual[0].X);
Assert.AreEqual(expected[0].Y, actual[0].Y); #endregion #region 测试p1和p2坐标一样的情况 p1 = new TwoDimPoint(3, 5);
p2 = new TwoDimPoint(p1);
len = 2;
try
{
actual = Triangle.GetVertex(p1, p2, len, angle);
}
catch (Exception ex)
{
NotImplementedException obj = ex as NotImplementedException;
Assert.IsNotNull(obj);
StringAssert.Equals("已知两顶点的坐标一致,无法计算未知顶点的坐标!", obj.Message);
} #endregion #region 测试p1、p2边与纵轴平行的情况 #region 测试p0与p1、p2在一条直线上的情况 p1 = new TwoDimPoint(0, 0);
p2 = new TwoDimPoint(0, -4);
len = 5;
angle = Math.PI;
expected = new TwoDimPoint[1];
expected[0] = new TwoDimPoint(0, 5);
actual = Triangle.GetVertex(p1, p2, len, angle);
Assert.AreEqual(expected.Length, actual.Length);
Assert.AreEqual(expected[0].X, actual[0].X);
Assert.AreEqual(expected[0].Y, actual[0].Y); #endregion #region 测试p0与p1、p2在不一条直线上的情况 p1 = new TwoDimPoint(0, 0);
p2 = new TwoDimPoint(0, -4);
len = 5;
angle = Math.Asin(0.6);
expected = new TwoDimPoint[2];
expected[0] = new TwoDimPoint(3, -4);
expected[1] = new TwoDimPoint(-3, -4);
actual = Triangle.GetVertex(p1, p2, len, angle);
Assert.AreEqual(expected.Length, actual.Length);
Assert.AreEqual(expected[0].X, actual[0].X);
Assert.AreEqual(expected[0].Y, actual[0].Y);
Assert.AreEqual(expected[1].X, actual[1].X);
Assert.AreEqual(expected[1].Y, actual[1].Y); #endregion #endregion #region 测试一般情况 p1 = new TwoDimPoint(0, 0);
p2 = new TwoDimPoint(5, 0);
len = 5;
angle = Math.Asin(0.6);
expected = new TwoDimPoint[2];
expected[0] = new TwoDimPoint(4, 3);
expected[1] = new TwoDimPoint(4, -3);
actual = Triangle.GetVertex(p1, p2, len, angle);
Assert.AreEqual(expected.Length, actual.Length);
Assert.AreEqual(expected[0].X, actual[0].X);
Assert.AreEqual(expected[0].Y, actual[0].Y);
Assert.AreEqual(expected[1].X, actual[1].X);
Assert.AreEqual(expected[1].Y, actual[1].Y); #endregion
}

  以上测试代码对GetVertex方法的代码覆盖率为83.64%。

三、运行单元测试

  单元测试的运行有两种方式:调试和运行。可以像调试普通代码一样对单元测试代码进行调试,也可以直接运行,单元测试的结果将在“测试结果”界面中展示,双击测试结果,可以得到测试结果的详细信息。单元测试的代码覆盖率可以在“代码覆盖率结果”界面中展示。

1、打开“测试视图”。

2、在测试视图中,右键单击方法,选择“运行选定内容”。

3、查看测试结果。

4、查看代码覆盖率。

  直接查看代码覆盖率将会提示“找不到任何覆盖率数据(.coverage或.coveragexml)文件。”。

  需要进行下列配置:

  (1)在解决方案中的Solution Items文件夹下双击Local.testsettings,打开打开“测试设置”窗口。

  (2)选择“数据和诊断”,将代码覆盖率设置为启用,然后点击“配置”对代码覆盖率进行配置。

  (3)在“代码覆盖率 详细信息”界面中,勾选要检测的项目,点击“确定”。

  (4)在“测试设置”界面中点击“应用”即可。

  再次查看“代码覆盖率结果”,结果如下:

  双击代码覆盖率中的方法,可定位到方法中查看哪部分代码被测试代码覆盖,哪部分未被覆盖。

VS2010的单元测试(一)的更多相关文章

  1. VS2010的单元测试(二)

    四.附加测试属性 附加测试属性,在默认生成的测试代码是使被注释掉的,取消注释就可以使用. 例如,要在执行测试前,输出测试开始时间,在执行测试后,输出测试结束时间.代码如下: [ClassInitial ...

  2. VS2010 单元测试,性能测试 案例

    http://www.cnblogs.com/heqichang/category/315226.html

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

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

  4. VS2010单元测试

    编号:1016时间:2016年5月26日09:35:27功能:VS2010单元测试URL :http://blog.csdn.net/tjvictor/article/details/6175362

  5. VS2010(2012)中使用Unit Testing进行单元测试

    原文 VS2010(2012)中使用Unit Testing进行单元测试 使用VS 2012自带的Unit Testing工具进行单元测试是非常方便的.网上关于这方面的例子很多,这篇随笔只起个人学习笔 ...

  6. VS2010单元测试入门实践教程

    单元测试的重要性这里我就不多说了,以前大家一直使用NUnit来进行单元测试,其实早在Visual Studio 2005里面,微软就已经集成了一个叫Test的专门测试插件,经过几年的发展,这个工具现在 ...

  7. 实现VS2010整合NUnit进行单元测试(转载)

    代码编写,单元测试必不可少,简单谈谈Nunit进行单元测试的使用方式: 1.下载安装NUnit(最新win版本为NUnit-2.6.4.msi) http://www.nunit.org/index. ...

  8. 5分钟实现VS2010整合NUnit进行单元测试

    本文转载自:http://www.cnblogs.com/jeffwongishandsome/archive/2012/03/18/2404845.html 1.下载安装NUnit(最新win版本为 ...

  9. 实现VS2010整合NUnit进行单元测试

    1.下载安装NUnit(最新win版本为NUnit.3.2.1.msi) http://www.nunit.org/index.php?p=download 2.下载并安装VS的Visual Nuni ...

随机推荐

  1. 记一次使用logmnr查找操作人流程

    经常遇到开发的需求,帮我查一下是谁修改了表里面的记录,是谁对表进行了DDL操作,此类问题可以使用logmnr解决 1.根据操作时间定位归档日志 SELECT name FROM V$ARCHIVED_ ...

  2. hello2 部分代码解析

    ResponseServlet.java源码文件 1 @WebServlet("/response") //以@WebServlet注释开头,注释指定相对于上下文根的URL模式, ...

  3. WIFI 国家码和信道划分

    前言 网上百度了很多资料,都没有找到国家码对应支持哪些信道的资料,无奈只能qiang到谷歌,分享给大家完整的WIFI 国家码和信道划分. 安卓WIFI国家码的影响 android中设置wifi国家码的 ...

  4. 用xmind设计用例:

    注意一个原则:清晰明了,简单高效 注意不要写成需求分析,从测试的角度对场景进行分类管理 注意点: 1.思维导图重要的是逻辑清晰归类,注意有不要太多具体的操作步骤 举个例子(来源:https://www ...

  5. RestTemplate post请求

    以前一开始用原生的http请求,那叫一个累,后来找到一个第三方的工具包,用起来是真的舒服,不过有一说一,第三方工具包依赖性真的强,除非和组长商量过,不然能少用,还是少用点.话说搞微服务的肯定少不了和H ...

  6. 布隆过滤器 数据同步业务 :google-guava+spring-boot-api+mybatis, 缺失值全匹配查找

    布隆过滤器 数据同步业务 :google-guava+spring-boot-api+mybatis, 缺失值全匹配查找

  7. 省选复习 - LCT 笔记

    目录 LCT 笔记 主要功能 和其它数据结构的比较 思想 虚实剖分 如何维护所有的链 实链 虚边 开始构思 具体要维护的功能(从基础到高级) Splay部分 access(u) make(u) fin ...

  8. Prometheus监控Kafka

    Prometheus监控Kafka 1.Prometheus监控Kafka,Docker方式 Kafka监控优秀博文: 简书:whaike:[监控]Kafka - 详细指标 CSDN:GeekXuSh ...

  9. Phoenix简介概述,Phoenix的Java API 相关操作优秀案例

    Phoenix简介概述,Phoenix的Java API 相关操作优秀案例 一.Phoenix概述简介 二.Phoenix实例一:Java API操作 2.1 phoenix.properties 2 ...

  10. 制作MySQL的Windows服务+创建用户及授权

         在上一篇随笔中详述了MySQL的Windows 64位版本的安装,以及初始化操作.启动服务端.客户端连接.一些基本的文件操作等.然而在进行这些操作的时候,需要我们去输入一长串的路径和命令才能 ...