测试驱动开发(Test Design Development, TDD),也常常被理解为测试驱动设计(Test Driven Design),是一个开发模式,开发人员通过首先编写一个单元测试,再编写实际的系统代码使测试能够成功。单元测试可以被看作为一个小型规范系统行为的准则,预先编写测试可以帮助开发人员专注于仅编写能够使测试成功的代码,而不是在实现需求的时候添加太多的“想当然的”功能,因此可以有利于开发一个紧凑轻量级的系统,只着眼于如何完成文档所需的要求。
TDD 遵循“Red, Green, Refactor”,简单来说就是“失败、成功、重整”三部曲。
- 红色(失败):预先编写的测试肯定是失败的,因为还没有实现实际的功能
- 绿色(成功):代表编写了只编写了最小量的代码使得测试能够成功
- 重整:回顾书写的代码,保证其紧凑、整洁及其有更大的伸缩性
此三部曲可以是在TDD开发人员的每日工作中都重复出现的韵律操,周而复始循环不断。
这次学习的目的:
- 理解TDD模式
- 先编写一个测试,并使之从Red(失败)到Green(成功)
- 如何重整代码确保所有测试都能通过
任务 1 – 创建新项目
- 运行VS2010
- 创建新项目:菜单File | New Project...
- 选择C#语言并在模板中选择“Class Library”
- 修改项目名称为:SimpleDataStructures
- 选中Create directory for solution后点击OK创建新项目
- 在Solution Explorer中选择VS模板默认创建的Class1.cs并删除它
- 右键点击SimpleDataStructures Solution,在菜单中选择Add | New Project
- 选择Test分类后再选定“Test Project”模板,并修改名称为SimpleDataStructures.Tests,点击OK创建测试项目
- 删除VS模板默认创建的UnitTest1.cs
任务 2 – 创建存放测试方法的新类及测试环境
- 在Solution Explorer右键点击SimpleDataStructures.Tests项目,选择Add | Class
- 修改类的名称为SimpleStackTests并点击Add按钮创建新类
- 打开SimpleStackTests.cs文件,修改SimpleStackTests的构造方法为public访问(默认的访问是internel)
namespace SimpleDataStructures.Tests
{
public class SimpleStackTests
{
}
}
- 添加TestClassAttribute特性给SimpleStackTests类:
namespace SimpleDataStructures.Tests
{
[TestClass]
public class SimpleStackTests
{
}
}
- 因为TestClass不被识别,Smart Tag功能会提示导入命名空间Microsoft.VisualStudio.TestTools.UnitTesting,使用CTRL+.弹出Smart Tag菜单,并选择上述命名空间
- 存放测试方法的文件创建好了,现在来说一下什么是测试上下文描述(Context)
- 在TDD中,Context用于描述要测试对象的行为、状态和条件,详尽的上下文描述有利于一目了然知道测试目的
- 因此要使用尽量详细的描述性语言来命名测试所用的类名、测试方法名称,而不是一般代码使用的类名和方法名
- 假设新的SimpleStack实例被创建,那么它只有默认的状态,如何设定测试的上下文描述呢?
- 将类名SimpleStackTests改为WhenAStackIsCreated,更加直观
public class WhenAStackIsCreated
{
}
(打了2个小时最后保存的时候出错... 只有之前存在草稿中的前部分还存在,只好等明天重新写下部分)