TDD
(
Test Driven Development
),核心思想就是以测试的方式来驱动开发,它对传统的软件开发流程做了一个有效的调整。
TDD
的目的主要是为了保证类是为了其所赋予的功能、职责而存在,另一方面也是为了保证避免过度设计,还有就是为了将来的重构方便,为了持续集成存在能够有意义
,
测试不仅带来了软件质量的提升,也同时为软件提供了详尽的文档。(本文为
<<
精通
Spring
-
Java
轻量级架构开实践
>>
的学习笔记)
/** */
/**
* 日期格式化程序,将输入的日期字符串格式化为MM-DD-YYYY的形式
*
*/

public
class
MyFormatter
...
{

public static String formatDate(String strUnFormatted)...{
return null;
}

}
mport junit.framework.Test;
import
junit.framework.TestCase;
import
junit.framework.TestSuite;


/** */
/**
* 该测试类使用Junit框架来对需求规格中
* 关于日期格式化程序的所有测试案例进行测试
*
*/

public
class</
资深专家
Kend Beck
这样描述
TDD
的开发步骤:
1 在开始真正编码之前,添加相应的能够失败的测试代码。
2. 运行所有的测试,测试未通过。
3. 修改代码。
4 运行所有的测试,测试全部通过。
5 重构代码,消除冗余。
以简单的示例来实践TDD思想 b)这个类现在没有任何逻辑,而仅仅是为了使接下来即要撰写的测试类通过编译。现在将要根据需求规格说明开始逐项测试案例脚本,而这些案例将真实地驱动formateDate()方法的开发。按照JUnit框架的使用约定,撰写测试类如下,如代码清单2所示:
在这里编写一个工具(
utility
)程序来实践
TDD
的核心思想,需求规格说明如下:
接受一个日期字符串,进行格式化并输出,假设该程序可以接收以下格式的输入:
1
空值(
null
或者
””
)
2 MM
-DD-YYYY
3 MM
-D-YYYY
4 M
-DD-YYYY
5 MM
-DD-YY
其中,
M
表示月,
D
表示日期,
Y
表示年,
MM
表示用两位数字表示月分,以此类推。对所有这些可能的输入格式
(
空值除外
)
,该程序都将转换为:
MM
-
DD
-
YYYY
的格式:输入字符串为空值(
null
或者
””
),输出为
” ”
。
对于只有一位数字的日期和月份,在高位补上
”0”
:对于两位数字的年份,在高位补上“
20
”
(如:
06
年
2
月
12
号,按照输入格式为:
2-12-06
,补齐以后写为:
02-12-2006
)。
另外,当输入其他不符合以上格式的任意字符串时,将返回
” ”
。
下面按照Kend Beck描述的TDD开发步骤来进行:
1 添加测试
明确了上面的需求以后,开始执行上述步骤的第一步:添加测试。
a)为该程序命名,类名为
MyFormatter
,作为一个工具应用程序,使用静态方法,名为“
formateDate()
”
,
下面新建一个新类,如代码清单1所示:
清单1














清单2











