posts - 262,  comments - 221,  trackbacks - 0

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)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
 
<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

常用链接

留言簿(21)

随笔分类

随笔档案

BlogJava热点博客

好友博客

搜索

  •  

最新评论

阅读排行榜

评论排行榜