测试,驱动开发(Test-Driven) Development
测试,驱动开发》英文名(Test-Driven) Development,是一本很不错的影印版书籍,多日来读的颇有心得,抽出里面比较精华的内容献给论坛上所有从事类单元测试的人,大家相互学习。
XP的核心理论就是“测试,驱动开发”,如果使用XP过程在没有测试的保障情况下,那真是一种可怕的灾难,大家有兴趣可以看看一些关于“盖鸡窝”的介绍文章。
《测试,驱动开发》开始使用了一个例子,实际上此书的一半都是围绕这个例子在讲解如何增量的开展类测试过程,这个例子是这样的,
作者提供了一个Money类,这个Money类代表着世界上所有的货币,当然现实生活中,不同国家的货币兑换是有汇率的,例如:CHF和USD的换算是2:1,那么5个USD和10个CHF相加等于10个USD。
好的,按照中国程序员的习惯肯定就直接书写Money的实现代码了,不,这在XP过程中是个错误,大家要养成测试-实现的新思路,作者首先书写Money的测试类,下面是Money测试类的一个片断:
Public void testMultiplication{
Dollar five = new Dollar(5);
five.times(2);
assertEquals(10,five.amount);
}
该测试片断属于应用Junit的测试代码(大家有兴趣可以访问Junit的官方站点http://www.junit.org),我可以为感兴趣的读者逐行解释。
Public void testMultiplication{},这是使用Junit展开类测试的标准规定,所有使用Junit的测试方法必须符合一下条件(摘自我的书籍):
1.测试方法必须是公有的(Public)。
2.测试方法必须被声明为(Void)。
3.测试方法的前置名词必须是test。
4.测试方法无任何传参。
assertEquals(10,five.amount),这是Junit提供的断言方法,用来检测左边用户设定的期望值和右边程序实际输出值是否正确,值得一提的是Junit有两种错误方式,如果Junit抛出Failer,那么这个错误就是被测试类的错误,如果Junit抛出Error,那么这个错误属于构造测试类本身的错误。