上次软工课上,老师讲到了单元测试,而且还通过一个简单的例子讲解了一下,霎时感觉单元测试真的很重要。当老师提到单元测试的时候,哥在下面还暗暗自喜了一番,因为之前自己学java的时候用到了单元测试(junit)。过了一会,建民老师给了一段很简单的代码:就是一个找最大值,核心代码都给出来了,让我们这些鸟儿们给他找错。代码如下:
int Largest(int list[], int length) { int i,max; for(i = 0; i < (length – 1); i ++ ) { if(list[i] > max) { max=list[i]; } } return max; }
我现在对java情有独钟,有强大的编程工具和众多的类库,用起来很方便,很快我就测试起来了。先来了第一组普通的数据1,2,3;出乎意料出来两个中间值2,神马情况,仔细一看,建民老师脱“1”而去,这么赤裸裸的~.~,大家还是都能发现的是吧!哈哈,于是把for(i = 0; i < (length – 1); i ++ )改成了for(i = 0; i < length; i ++ ),再次运行结果对了。
就像建民老师一直在说找一些极端的数据,嗯 应该这样,我们每个人都在很认真,高度集中的在测试。老师,我们注意力高度集中,您给的时间还有限,在这个时间您说的每句话,学生们都很纠结是听还是不听,这是一个矛盾,盾着盾着。。。时间到了。。。此处省去几十个字。。。还是专心搞博客吧,测试了一组乱序数据:3,6,5,8,10;结果是10,嗯,没问题。虽然很纠结但还是矛盾之中听到了老师一直再提什么是整数,是啊,整数都包括什么啊!。负数,没错,搞一组测试数据,-1,-6,-4,-3,-7.结果竟然出来一个0(max我初始化为0了),不是该-1么。0比任何负数都大,这么个初值显然不合适啊。那怎么办呢,把数组中的第一个值当成max的初值,结果就对了。此外还对一些空数组做了一下提示处理:
int Largest(int list[],int length) { int i,max=0; if(list!=null&&length>0) { max=list[0]; for(i=0;i<length;i++) { if(list[i]>max) { max=list[i]; } } } else { System.out.println("数组为空"); } return max; }
好了,整个单元测试做完了,那么简单的一个代码,缺时应该考虑很多方面,倘若不做单元测试,这样的bug等到整个项目快要做完的时候再去处理,恐怕到时候就不知所措了。还是早发现,早治疗吧。