[转]VS2010中的C#单元测试

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

1、建立单元测试项目

1.1、从被测试代码生成单元测试

1)实例:创建VC#模式下的控制台应用程序,工程名为CUnitTest

2)输入简单的加、减、乘、除函数代码,如下图所示

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()]标识。

(6)ProgramTest.cs代码文件详讲

[TestMethod()]:说明了以下代码是一个测试用例

Int a = o; // TODO: 初始化为适当的值

int b = 0; // TODO: 初始化为适当的值

这两句是被测函数的输入参数,需要我们去修改它的值,也就是我们输入测试用例的地方。

double expected = 0; // TODO: 初始化为适当的值

double actual;

这两句话浅显易懂,前一句话是定义了期望值和对它进行初始化,后一句话是定义了实际值。默认

Assert.AreEqual(expected, actual);

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

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

1.2、添加单元测试项目

(1)另外一种单元测试方法是独立添加单元测试项目,在解决方案中添加一个新的项目,选择项目类型为"测试项目",

(2)单击确定后,自动产生一个新的单元测试项目,在"解决方案资源管理器"中可看到新添加的测试项目"TestProject2"。对比"TestProject2"和"AddTest"可发现,"TestProject2"少了对被测试项目程序集的引用,仅仅引用了单元测试框架的DLL"Microsoft.VisualStudio.QualityTools.UnitTestFrame"

2、编写测试方法

单元测试的基本方法是调用被测代码的函数,输入函数的参数值,获取返回结果,然后与预期测试结果进行比较,如果相等则认为测试通过,否则认为测试不通过。

1、Assert类的使用

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

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

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

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

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

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

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

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

2、CollectionAssert类的使用

用于验证对象集合是否满足条件

StringAssert类的使用

用于比较字符串。

StringAssert.Contains

StringAssert.Matches

StringAssert.tartWith

3、数据驱动的单元测试

数据驱动的单元测试是指单元测试的输入数据遍历一个数据源的所有行。从数据源的没一行读入数据并传入给测试方法使用

3.1、ACCESS数据驱动单元测试

1)打开测试视图窗口,选择测试视图

2)在测试视图窗口中选择需要配置成数据驱动方式的单元测试方法,然后按F4,打开单元测试的属性窗口

3)编辑"数据连接字符串"属性,在"属性"窗口中单击该属性,然后单击省略号 (…)。这将打开"选择数据源"对话框,其中列出了若干个可能的数据源,包括 ODBC、Microsoft SQL Server 和 Microsoft Access。选择一个数据源后将打开一个特定于该数据源类型的对话框;可以使用此对话框配置该数据源的连接属性。配置完数据连接后,连接字符串会作为"数据连接字符串"的值出现。此字符串还会作为单元测试方法的一个属性存储起来

4)在这个界面中,选择一个Acess表data.mdb,单击"确定"按钮完成设置,回到"单元测试属性"窗口。可以看到数据源的已经设置好。

5)在建立与数据源的连接之后,可以选择一个数据表。当您单击"属性"窗口的值列中的下拉列表时,将会列出所连接的数据库中的表。从此列表中选择的表就是在运行单元测试时将检索其中的行的表。与"数据连接字符串"等其他属性一样,"数据表名称"也会作为单元测试方法的一个属性存储起来。

6)在"数据访问方法",请选择"顺序"或"随机";默认值为"顺序"。此设置表示从数据源的表中检索记录的顺序。

可以看到,在测试方法前面已经添加了一行:

7)数据源的使用

通过 TestContext 类的 DataRow 和 DataConnection 属性将数据提供给正在运行的单元测试。下面为使用TestContext 类的 DataRow属性来读入数据行

8)Acess数据源中的表为

3.2、读取Excel的方法:

1)在桌面新建一个txt文件,更改文件名为data.dsn

2)选中"数据库连接字符串",单击右边列的按钮,更改数据源为Microsoft ODBC数据源,点击"确定"按钮

3)选择使用连接字符串,点击生成

4)选择Excel数据源的驱动程序,点击"下一步"

5)选择data.dsn为数据源保存文件,一直选择"下一步"。

6)在弹出的选择工作簿中,选择用例的输入文件data.txt,点击"确定"

7)选择用例所在的Sheet页,选择"完成"

8)数据源的使用代码

4、单元测试的运行

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

5、附加测试属性

"附加测试属性"。默认都是被注释掉的,只要我们取消注释就可以使用了。这个功能的加入,很大程度上是为了增加测试的灵活性。具体的属性有:

[ClassInitialize()]在运行类的第一个测试前先运行代码

[ClassCleanup()]在运行完类中的所有测试后再运行代码

[TestInitialize()]在运行每个测试前先运行代码

[TestCleanup()]在运行完每个测试后运行代码

如在执行测试时,将测试执行时间输入到日志中,代码如下

时间: 2024-09-30 18:49:41

[转]VS2010中的C#单元测试的相关文章

VS2010中的自动化测试(5)——Web性能测试

原文地址:http://www.cnblogs.com/heqichang/archive/2011/11/20/2256478.html 类目见这里:http://www.cnblogs.com/heqichang/category/315226.html 接着上次那篇文章,这次我来详细说一下性能测试编辑窗口中的各个功能及操作. 上次说到我们编辑窗口中的树结构,每一层都会有不同的属性设置. Root Level:可以说是一条Web性能测试的入口点,比如:可以在此设置用户验证.代理或者为这条测试

vs2010中使用Nunit测试c#代码结果的正确性

http://www.nunit.org/index.php?p=download 上面地址下载,有安装版的,有直接解压版的,只有里面的nunit.framewor.dll就可以做简单的测试了. 安装版的路径默认为:C:\Program Files \NUnit 2.6\bin\framework\nunit.framewor.dll 从vs2010中直接下载安装插件: 安装完后提示重启vs,然后就可以打开用了,在视图中可以打开: 然后写好测试代码之后,就能够看到结果,不对的话会有相应的错误..

VS2010中的快捷键

一. VS2010中的快捷键 1: Ctrl + Enter (在光标指定位置的上+ K + C (注释) Ctrl + E + U (取消注释) <=> Ctrl + K + U (取消注释) 5: Tab  (增加缩进)面添加一行,并将光标移至新添加行的行首位置) Ctrl + Shift + Enter (在光标指定位置的下面添加一行,并将光标移至新添加行的行首位置) 2: Ctrl + Shift + L (删除当前行) 3: Ctrl + M + O (折叠所有的函数) Ctrl +

VS2010中如何将动态链接库改成静态链接库

VS2010中如何将动态链接库改成静态链接库 VS2010静态编译生成的.exe可执行文件,可以免安装免DLL在其他电脑直接运行. 静态编译:就是在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖动态链接库. 1. 编译实现方式有两种 [1]debug方式的静态链接: 设置: (1)项目 -> 配置属性->常规->MFC的使用:在静态库中使用MFC(如果有使用MFC). (2)项目 -> 配置

VS2010中配置OpenGL

下面将对VS2010中配置OpenGL进行简单介绍. 学习OpenGL前的准备工作第一步,选择一个编译环境现在Windows系统的主流编译环境有Visual?Studio,Broland?C++?Builder,Dev-C++等,它们都是支持OpenGL的. 我选择Visual?Studio?2010和VC6++作为学习OpenGL的环境.第二步,安装GLUT工具包GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装.Windows环境下的GLUT下载地址:(大小约为15

vs2010中的ADO控件及绑定控件

要在项目中添加某一个ActiveX控件,则该ActiveX控件必须要注册.由于VS2010中,并没有自动注册ADO及ADO数据绑定控件(Microsoft ADO Data Control,Microsoft DataCombo等),参考http://msdn.microsoft.com/zh-cn/library/dsb06ab6(v=vs.100).aspx 故没法在插入ActiveX控件对话框中找到它们. 若要在VS2010中获得这种控件,需要另外下载然后注册,或者利用以前的VS版本获得.

二维码Data Matrix简单介绍及在VS2010中的编译

Data Matrix 二维条码原名Datacode,由美国国际资料公司(International Data Matrix, 简称ID Matrix)于1989年发明.Data-Matrix二维条码是一种矩阵式二维条码. Data Matrix符号由规则排列的深浅色正方形模块构成,每一个正方形模块就是一个基本单元.每一个基本单元又被编码为一比特的数据. 数据区的四周是探測图形.用于条码符号定位和确定条码结构信息.探測图形的四周是空白区,用以将条码符号与背景分离. 探測图形是一个模块的宽度.是数

vs2010中c#中类库dll制作和引用方法

vs2010中c#类库dll制件 1.建立类库文件 2.写好类:注意类的级别对外要公共的属性public 3.按F6生成.dll文件,可在目录的debug中找到 vs2010中c#类库dll引用方法 1.在工程的右边解决方案中添加引用找到刚才生成的文件或别人生成的文件 2.在程序中引用 采用using using mydll;//mydll为类库的命名空间 3.在对象浏览器中可看到引用类库的各个属性和特征 4.引用添加后,可在程序中直接调用引用的属性等.

怎样在VS2010中打开vs2012的项目

VS2012中对C#的支持度非常好,不管是编写方便程度(不需要插件就能高亮代码及代码自动提示功能),还对MFC的一些功能优化很多. 我们可以修改两个工程文件来把VS2012的工程文件一直到VS2010中去. 首先当然是修改解决方案文件(.sln文件). 使用记事本打开,把里面的 Microsoft Visual Studio Solution File, Format Version 12.00# Visual Studio 2012 改成 Microsoft Visual Studio Sol