- 4
- 0
- 约3.45千字
- 约 15页
- 2017-02-08 发布于重庆
- 举报
C单元测试
单元测试的功能很强大,使得建立单元测试和编写单元测试代码,以及管理和运行单元测试都变得简单起来,通过私有访问器可以对私有方法也能进行单元测试,并且支持数据驱动的单元测试。
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少了对被测试项目程序集的引用,仅仅引用了单元测试框架的 DLLMicrosoft.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数据驱动单
您可能关注的文档
- AIW软件使用笔记.doc
- 8086实验指导书实验1-12.doc
- AndroidStudio重构之路,我们重新来了解一下Google官方的Android开发工具.doc
- Android提供了5种方式存储数据.doc
- Android启动过程详解.doc
- ANSYS常用的命令.doc
- android如何查看cpu的占用率和内存泄漏.doc
- ansys中载荷步载荷子步时间步三者的关系.doc
- ansys常见问题解答.docx
- app接口文档模板.doc
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
原创力文档

文档评论(0)