C进行单元测试实例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
演练:使用Visual Studio Team Test 进行单元测...
演练:使用Visual Studio Team Test 进行单元测试
发布日期: 5/24/2005 | 更新日期: 5/24/2005
Mark Michaelis
Itron Corporation
摘要:本演练通过测试驱动开发(TDD) 和先测试-后编码(test-then-code) 的方法学习单元测试。
本页内容
简介
开始
创建测试
运行测试
检查异常
从数据库中加载测试数据
测试视图(Test View) 窗口
增加一个测试数据库
将数据与测试关联
实现和重构目标方法
代码覆盖
初始化和清除测试
最佳实践
小结
简介
最新发布的Visual Studio Test System (VSTS) 包含了一套用于Visual Studio Team Test 的完整功能。Team Test 是Visual Studio 集成的单元测试框架,它支持:
测试方法存根(stub) 的代码生成。
∙在IDE 中运行测试。
∙合并从数据库中加载的测试数据。
∙测试运行完成后,进行代码覆盖分析。
另外,Team Test 包含了一套测试功能,可以同时支持开发人员和测试人员。在本文中,我们准备演练如何创建Team Test 的单元测试。我们从一个简单的示例程序集开始,然后在该程序集中生成单元测试方法存根。这样可以为Team Test 和单元测试的新手读者提供基本的语法和代码,同时也很好地介绍了如何快速建立测试项目的结构。然后,我们转到使用测试驱动开发(test driven development, TDD) 方法,即在写产品代码前先写单元测试。
Team Test的一个关键特点是从数据库中加载测试数据,然后将其用于测试方法。在演示基本的单元测试后,我们描述如何创建测试数据并集成到测试中。本文中使用的示例项目包含一个LongonInfo 类,它封装了与登录相关的数据(例如用户名和密码)以及一些关于数据的简单的验证规则。最终的类如下图1 所示。
图1. 最终的LogonInfo类
请注意所有的测试代码位于一个单独的项目。这是有道理的,产品代码应该尽可能少的受测试代码影响,所以我们不想在产品代码的程序集中嵌入测试代码。返回页首
开始
首先,我们创建一个名为“VSTSDemo”的类库项目。默认情况下,为方案创建目录(Create directory for solution) 复选框被选中。保留此选项可以使我们在VSTSDemo 项目的同一层目录创建测试项目。相反,如果不选中此
选项,Visual Studio 2005 会将测试项目放在VSTSDemo 项目的子目录中。测试项目遵循Visual Studio 在解决方案文件路径的子目录中创建额外项目的规定。
创建初始的VSTSDemo 项目后,我们使用Visual Studio 的解决方案资源管理器将Class1.cs 文件重命名为LogonInfo.cs,这样类名也会被更新为LogonInfo。然后我们修改构造函数以接受两个字符串参数:userId和password。一旦构造函数的签名被声明,我们就可以为构造函数生成测试。图2. LongonInfo 构造函数的上下文菜单的“创建测试…”(Create Tests...) 菜单项
返回页首
创建测试
在开始编写LogonInfo的任何实现之前,我们遵循TDD 实践的规则,首先编写测试。TDD 在Team Test 中并不是必需的,但最好在本文的剩余部分遵循TDD。右键单击LogonInfo()构造函数,然后选择“创建测试…”菜单项(如图2 所示)。这样会出现一个对话框,可以在不同的项目中生成单元测试(如图3 所示)。默认情况下,项目设置的输出(Output) 选项是一个新的Visual Basic 项目,但是也可以选择C# 和C++ 测试项目。在本文中,我们选择Visual C#,然后单击OK 按钮,接着输入项目名VSTSDemo.Test。测试项目名称。
图3. 生成单元测试对话框
生成的测试项目包含四个与测试相关的文件。