vs2005 单元测试
测试方案:
1.列出CR中所有的用户类
2.定好每个类中的属性,方法 以及传递参数,返回值;
3.建好类,不写具体的代码实现
4.创建测试类
5.测试类中写函数的测试代码
6.被测试类中属性,函数的代码实现,以及基本的语法排错测试
7.在测试类中运行测试函数,看是否通过。
测试思想:测试驱动开发 (TDD) 和先测试-后编码 (test-then-code) 的方法思想
将测试程序和被测试程序分开处理。
测试工具:Team Test 是 Visual Studio 集成的单元测试框架
优点:1。测试方法存根 (stub) 的代码生成(自动生成基本的测试代码)
2.合并从数据库中加载的测试数据。
(从数据库中加载测试数据,然后将其用于测试方法)
3.测试运行完成后,进行代码覆盖分析。
具体实现:
一、 VS2005单元测试功能介绍
1. 测试简介
VS2005提供的新功能,可以直接在解决方案中创建一个测试项目,对一个或多个项目进行测试。测试项目会自动生成大部分的测试代码,只需要修改入参等值便可对代码进行自动测试。
2.TDD原理:调用类的方法,传递合适的参数,并验证返回值是否为所期望值 即:给出一个实际值,和一个期望值,实际值经过被测试函数调用后返回的结果与期望值相比较,如果相等则表示测试通过,否则表示测试不通过。
3. Assert类
使用 true/false 命题验证单元测试中的条件。如果此条件计算为 true,则断言通过。通过引发 AssertFailedException 来发出信号表示测试失败。
Assert 类可对特定功能进行验证。单元测试方法执行开发代码中的方法代码,但只有包含 Assert 语句时才能报告代码行为方面的内容。
4. Team Test ,有两个重要的特性。首先,作为测试的方法由 TestMethodAttribute指定,另外,包含测试方法的类有 TestClassAttribute。这些属性都可以在 Microsoft.VisualStudio.QualityTools.UnitTesting.Framework 命名空间中找到。Team Test 使用反射机制在测试程序集中搜索所有由 TestClass修饰的类,然后查找由 TestMethodAttribute修饰的方法来决定执行的内容。另外一个重要的由执行引擎而不是编译器验证的标准是,测试方法的签名必须是无参数的实例方法。因为反射搜索 TestMethodAttribute,所以测试方法可以使用任意的名字
5.测试进行设置和清除的方法分别由属性 TestInitializeAttribute和 TestCleanupAttribute修饰。在每个这样的方法中,我们可以加入额外的代码,它们将会在每个测试前或者测试后运行
二.操作:
1.创建测试:
创建一个类LogonInfo,列出类中的所有属性和方法,属性,方法的实现不写
选中任意函数单击右键,选中“创建单元测试”
弹出如下页面: 如下图
选择要创建测试函数的函数,输入项目名,点击“确定”
在解决方案中添加了Teamtest 测试项目同时自动添加测试文件LogonInfoTest.cs:如下图
在LogonInfoTest.cs 中的构造函数自动生成测试函数ConstructorTest()
根据需求改写ConstructorTest()函数 如下:
2.代码的实现
在LogonInfo.cs中写构造函数LogonInfo 如下:
若构造函数LogonInfo,能使测试函数ConstructorTest运行通过则表示 构造函数没有问题,否则 构造函数LogonInfo 有问题。
3.运行测试:
选择设置为启动项目 (Set as StartUp Project )。接着,使用菜单项调试 ->启动 ( F5 ) 或者调试 ->开始执行(不调试) ( Ctrl+F5 ) 开始运行测试。
这时出现测试结果窗口,列出项目中的所有测试
选定测试并双击,打开“ConstructorTest[Results]”窗口
选中某一个测试函数,进行测试。
若构造函数LogonInfo,能使测试函数ConstructorTest运行通过则表示 构造函数没有问题,否则 构造函数LogonInfo 有问题。
4.空值处理:在测试类中写2个函数一个处理NULL ,一个处理“” 如下:
当输入值为 Null 或“” 时,没有捕获到参数异常则 表示属性函数 不通过
写属性函数如下:
写好后,运行上面的两个测试函数,若测试函数通过则表示本属性函数没有问题,否则属性函数有问题。
5. 从数据库中加载的测试数据 :
在测试视图中任选一测试函数,右键属性:如下图:
进入属性编辑页面 如下图:可在其中设置:数据连接字符,数据表,
设置完成后在该测试函数的上面自动添加该测试函数的datasource属性,该属性指定的表返回每个记录时,该方法都会被调用一次。这就使测试代码使用运行中的测试的数据,如下图:
5.代码覆盖:查看在单元测试运行时测试了多少代码。
注意:必须在非调试器中起用代码覆盖,即运行时选择“开始执行(不调试)”
配置调试如下图:
点击“本地测试运行”弹出如下对话框:
选择要检测的项目,点击“应用”后,关闭该对话框。
点击“调试”---〉“开始执行(不调试)”
在代码覆盖率 结果视图中看到,本次测试的代码覆盖整体情况,如下图:
查看代码,在具体的代码页,分别用不同的颜色显示代码的执行块和未执行块
三.测试结果
<1 通过:说明测试的方法没有问题。
<2 错误:可以看到错误的测试名称、项目、错误信息等,方便找出错误产生的原因。
<3 没有结论:无法验证不返回值的方法。
四.其他
1.自动生成的测试代码通常会包括以下代码:(通常删掉)
|
Assert.Inconclusive("无法验证不返回值的方法。"); |
它会引发一个没有结论的异常。
2.关于Assert的成员,可以参考MSDN帮助文档,以下列出部分:
|
测试指定的值是否相等;如果两个值不相等,则测试失败。 |
|
|
测试指定的值是否不相等;如果两个值相等,则测试失败。 |
|
|
测试指定的对象是否都引用相同的对象;如果两个输入内容引用不同的对象,则测试失败。 |
|
|
测试指定的对象是否引用不同的对象;如果两个输入内容引用相同的对象,则测试失败。 |
|
|
断言失败。 |
|
|
表示无法证明为 true 或 false 的测试结果。 |
|
|
测试指定的条件是否为 true;如果该条件为 false,则测试失败。 |
|
|
测试指定的条件是否为 false;如果该条件为 true,则测试失败。 |
|
|
测试指定的对象是否为 空引用(在 Visual Basic 中为 Nothing);如果它不为空,则测试失败。 |
|
|
测试指定的对象是否为非空;如果它为 空引用(在 Visual Basic 中为 Nothing),则测试失败。 |
五.参考资料见:http://msdn2.microsoft.com/zh-cn/library/ms379625(vs.80).aspx
操作代码见:Teamtest.rar

浙公网安备 33010602011771号