public class testMath extends TestCase{
public void testSum(){
math math1 = new math ;
assertEquals("3加2应该等于5",5,math1.sum(3,2));
assertEquals("0加0应该等于0",0,math1.sum(0,0));
assertEquals("1加1应该等于2",2,math1.sum(1,1));
}
}
然后我们对math类的sum方法进行重构
public int sum(int a,int b){
return a+b;
}
以上是一个简单的例子,如果是在实际的开发中的话,至少还要加上对临界值的测试,比如两个最大的int值相加等。在上面的例子中,重构是为了让测试通过,或者说是为了保证代码功能上的正确性;有了这些test 作保证,我们还能为了提高代码的质量而重构。
我个人的理解,测试驱动开发的一个原则就是,编写可以信任的测试,只要测试全部通过,那么说明类的方法全部正确,如果你对代码没有信心,那说明测试代码的测试覆盖面不够,需要进一步完善。
关于重构的方法,书上归纳的有 extract class ,extract interface,extract method,replace type code with subclasses,replace conditional with polymorphism,form template method,introduce Explaining variable,replace constructor with factory method,replace inheritance with delegation,replace magic number with symbolic constant ,replace nested conditional with guard clauses,,refaction to patterns. 这些方法有很多的目的是提高代码质量。
文章来源于领测软件测试网 https://www.ltesting.net/