[转]Visual Studio 2010单元测试(1)--运行和定义普通单元测试
Visual Studio 2010 运行和定义单元测试
在VS2010中,单元测试的功能很强大,使得建立单元测试和编写单元测试代码,以及管理和运行单元测试都变得简单起来,通过私有访问器可以对私有方法也能进行单元测试,并且支持数据驱动的单元测试。
1、建立单元测试项目
1.1、从被测试代码生成单元测试
1)实例:创建VC#模式下的控制台应用程序,工程名为CUnitTest

2)输入简单的加、减、乘、除函数代码,如下图所示
- namespace CUnitTest
- {
- class Program
- {
- public int Add(int a, int b)
- {
- return a + b;
- }
- public int Dec(int a, int b)
- {
- return a - b;
- }
- public int Mul(int a, int b)
- {
- return a * b;
- }
- public int Div(int a, int b)
- {
- return a / b;
- }
- static void Main(string[] args)
- {
- }
- }
- }
3)可按如下步骤建立单元测试
(1)在Add方法体内,单击鼠标右键,在菜单中选择“创建单元测试”,就能把一个类的测试代码的外壳都自动写好。

(2)在出现的“创建单元测试”界面中,Add方法被自动勾上,表示要为这个方法创建单元测试代码的基本框架,单击确定按钮

(3)点击确定后,在新建测试项目中,输入需要创建的单元测试的新项目的名称,然后单击“创建”按钮,则自动创建一个新的单元测试代码项目。
(4)在“解决档案资源管理器”中可以看到多了一个“AddTest”项目,可以看出“AddTest”项目引用了被测项目的程序集,和单元测试框架Microsoft.VisualStudio.QualityTools.UnitTestFrame,并且自动产生两个C#代码文件AssemblyInfo.cs和ProgramTest.cs

(5)ProgramTest.cs的代码如下图所示,从图中可以看到,自动产生了一个“ProgramTest”类,并使用[TestClass()]标识为一个单元测试类,以及一个“AddTest”测试方法,。并用[TestMethod()]标识。
- using CUnitTest;
- using Microsoft.VisualStudio.TestTools.UnitTesting;
- using System;
- namespace AddTest
- {
- /// <summary>
- ///这是 ProgramTest 的测试类,旨在
- ///包含所有 ProgramTest 单元测试
- ///</summary>
- [TestClass()]
- public class ProgramTest
- {
- private TestContext testContextInstance;
- /// <summary>
- ///获取或设置测试上下文,上下文提供
- ///有关当前测试运行及其功能的信息。
- ///</summary>
- public TestContext TestContext
- {
- get
- {
- return testContextInstance;
- }
- set
- {
- testContextInstance = value;
- }
- }
- #region 附加测试特性
- //
- //编写测试时,还可使用以下特性:
- //
- //使用 ClassInitialize 在运行类中的第一个测试前先运行代码
- //[ClassInitialize()]
- //public static void MyClassInitialize(TestContext testContext)
- //{
- //}
- //
- //使用 ClassCleanup 在运行完类中的所有测试后再运行代码
- //[ClassCleanup()]
- //public static void MyClassCleanup()
- //{
- //}
- //
- //使用 TestInitialize 在运行每个测试前先运行代码
- //[TestInitialize()]
- //public void MyTestInitialize()
- //{
- //}
- //
- //使用 TestCleanup 在运行完每个测试后运行代码
- //[TestCleanup()]
- //public void MyTestCleanup()
- //{
- //}
- //
- #endregion
- /// <summary>
- ///Add 的测试
- ///</summary>
- [TestMethod()]
- public void AddTest()
- {
- Program target = new Program(); // TODO: 初始化为适当的值
- int a = 0; // TODO: 初始化为适当的值
- int b = 0; // TODO: 初始化为适当的值
- int expected = 0; // TODO: 初始化为适当的值
- int actual;
- actual = target.Add(a, b);
- Assert.AreEqual(expected, actual);
- //Assert.Inconclusive("验证此测试方法的正确性。");
- }
- /// <summary>
- ///Dec 的测试
- ///</summary>
- [TestMethod()]
- public void DecTest()
- {
- Program target = new Program(); // TODO: 初始化为适当的值
- int a = 0; // TODO: 初始化为适当的值
- int b = 0; // TODO: 初始化为适当的值
- int expected = 0; // TODO: 初始化为适当的值
- int actual;
- actual = target.Dec(a, b);
- Assert.AreEqual(expected, actual);
- //Assert.Inconclusive("验证此测试方法的正确性。"); //<span style="color:black;">语句是默认添加的,意思是这个方法是</span><span style="color:black;">Visual Studio</span><span style="color:black;">自动创建,运行前自删除或注释此句,否则运行结果无法通过。</span>
- }
- }
- }
(6)ProgramTest.cs代码文件详讲
[TestMethod()]:说明了以下代码是一个测试用例
Int a = 0; // TODO: 初始化为适当的值
int b = 0; // TODO: 初始化为适当的值
这两句是被测函数的输入参数,需要我们去修改它的值,也就是我们输入测试用例的地方。
double expected = 0; // TODO:初始化为适当的值
double actual;
这两句话浅显易懂,前一句话是定义了期望值和对它进行初始化,后一句话是定义了实际值。默认
Assert.AreEqual(expected, actual);
Assert在这里可以理解成断言:在VSTS里做单元测试是基于断言的测试。
默认代码中Assert.Inconclusive表明这是一个未经验证的单元测试。在实际的程序中可以注释掉。
[转]Visual Studio 2010单元测试(1)--运行和定义普通单元测试的更多相关文章
- Microsoft Visual Studio 2010(vs10)安装与使用
安装1.下载软件: 云盘分享http://pan.baidu.com/s/1i4JL9GT 2.安装 打开Microsoft Visual Studio 2010目录,双击setup.exe ,运行 ...
- Visual Studio 2010 单元测试之一---普通单元测试
原文:Visual Studio 2010 单元测试之一---普通单元测试 本文以Visual Studio 2010为例,来介绍如何在Visual Studio里面进行单元测试. 首先来介绍普通单元 ...
- Visual Studio 2010 单元测试--运行测试并查看代码覆盖率
原文:Visual Studio 2010 单元测试--运行测试并查看代码覆盖率 运行测试并查看代码覆盖率对程序集中的代码运行测试时,可以通过收集代码覆盖率数据来查看正在测试的项目代码部分. 运行测试 ...
- [转]Visual Studio 2010单元测试(2)--运行测试并查看代码覆盖率
Visual Studio 2010 单元测试--运行测试并查看代码覆盖率 运行测试并查看代码覆盖率对程序集中的代码运行测试时,可以通过收集代码覆盖率数据来查看正在测试的项目代码部分. 运行测试并查看 ...
- [转]Visual Studio 2010 单元测试目录
Visual Studio 2010 单元测试共分七个部分: 普通单元测试.顺序单元测试.压力测试,Generic测试.数据库测试.UI界面测试和Web性能测试. 这个系列的博客实例程序可以在下面的链 ...
- Visual Studio 2010 单元测试目录
单元测试的重要性这里我就不多说了,以前大家一直使用NUnit来进行单元测试,其实早在Visual Studio 2005里面,微软就已经集成了一个叫Test的专门测试插件,经过几年的发展,这个工具现在 ...
- [入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二)
[入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二) Date 周六 10 一月 2015 By 钟谢伟 Category website develop ...
- [转]基于Visual Studio 2010 进行敏捷/Scrum模式开发
http://www.infoq.com/cn/articles/visual-studio-2010-agile-scrum-development 根据Forrester Research今年第二 ...
- [入门级] visual studio 2010 mvc4开发,用ibatis作为数据库访问媒介(一)
[入门级] visual studio 2010 mvc4开发,用ibatis作为数据库访问媒介(一) Date 周二 06 一月 2015 By 钟谢伟 Tags mvc4 / asp.net 示 ...
随机推荐
- csp-s模拟测试86
csp-s模拟测试86 分屋前的最后一次考试,我早就放弃了自己. 02:02:46 70 02:02:57 03:16:08 100 03:16:08 $T1$忘了按位计算,达哥按位计算的$T1$当时 ...
- 命令学习_ping
PING: ping是一个所有操作系统都支持的简单工具.我么可以利用ping来解析DNS 的A record和PTRrecord. A记录是将域名映射到IP地址,这个是ping的缺省功能, ping同 ...
- (4)mysql约束
完整性约束 1.设置非空约束 not null 简称 NK约束 创建表时设置非空 CREATE TABLE tb_meng2(id INT NOT NULL,age INT); 2.设置字段默认值 默 ...
- iOS开发之SceneKit框架--SCNParametricGeometry.h
1.SCNParametricGeometry简介 SCNParametricGeometry用于创建简单的3D模型,比如SCNPlane 平面.SCNPyramid 锥形(金字塔).SCNBox 立 ...
- iOS开发Drag and Drop简介
1.Drag and Drop简介 Drag and Drop是iOS11的新特性,可以将文本.图片进行拖拽到不同app中,实现数据的传递.只不过只能在iPad上使用,iPhone上只能app内部拖拽 ...
- hexo next主题中关于pc端点击链接没问题,移动端点击链接页面不显示。
个人博客:https://mmmmmm.me 源码:https://github.com/dataiyangu/dataiyangu.github.io 背景 hexo next主题,本人diy的时候 ...
- timestamp的自动更新 ON UPDATE CURRENT_TIMESTAMP
最近有一个关于MySQL版本升级的事,涉及到一些关于时间类型的细节问题需要查明,因此到官网找到相关文章,翻出来比较方便自己理解,博客这里也贴一下. 参考官网网址: https://dev.mysql. ...
- HTTP协议请求篇
http协议的基本概念 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.是工作在tcp/ip协议基础上的,所有的WWW文件都必须 ...
- selenium基础(控制浏览器)
python基础(控制浏览器) 控制浏览器 控制浏览器窗口大小 设置浏览器屏幕大小方法:set_window_size() 浏览器最大化:maximize_window() 浏览器最小化:minimi ...
- 【转载】Kafka介绍及升级经验分享
http://blog.talkingdata.net/?p=3165 背景 当时的现状:开始使用Kafka的时候,使用的版本是0.7.2,当时的目的是为了替代kestrel,主要是使用Kafka来做 ...