1.关于单元测试:
单元测试中的Test Case在设计时,有两点要注意的:
a. 测试的方法最好短小精悍,每个test case只测试一个关注的功能,假如一个方法的处理逻辑里面包含了对几种可能情况的处理,那么测试案例最好分成几个来测试,举例如下
方法: public void convertStringToDate(String string)
在实际应用过程中,传入参数string的值可能有下面几种情况:
1). Null
2). 空格
3). 非空但格式错误
4). 非空且格式正确,但值错误(如:2008-02-31 23:59:59)
5). 非空且格式、值均正确
那么如果我们在同一个测试方法中: public void testConvertStringToDate()测试所有的可能情况,会有下面两个问题:
1). 代码量增多
2). 不利于修改,假如由于业务方法中某个处理逻辑改变了,此时重新测试时必须测试所有其它的方法
3). 可能造成测试案例的顺序依赖,比如其中某个方法会抛出异常,之后的测试案例可能不会被执行到
如果我们按照上面可能出现的情况来分的话,那么就有五个测试案例,从数量上看是多了,但是后果就是每个方法都非常短小(不超过6行),简单明了,一目了然,即便测试案 例错了,我也能马上看出来。其次一个测试案例的修改不会影响到其它的测试案例。
b.测试方法是否抛出异常,可以参考下面的代码结构:
try{
调用被测试代码 // 此处的代码必须是明确会抛出异常的,因为这是我们要测试的目的
fail("Error: Must throw an exception here.");
} catch(Exception e){
assertTrue(true);
}
2.关于使用DateFormat及其子类进行字符串和日期转换的注意点:
使用DateFormat将字符串转换成Date对象时,必须注意在转换前,先调用:setLinient(false);否则的话即使实际的日期数值有问题,例如2008-04-32 23:59:59,只要格式正确,也能够被转换成功,但这在实际的应用中是没有意义的。
-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要尽力打好一手烂牌。
posted on 2008-04-28 00:37
Paul Lin 阅读(207)
评论(0) 编辑 收藏