皇家方舟

如何测试异常?

      在写单元测试时,如何写异常的测试是很多人的难题。很多书建议使用如下方法进行测试:
public void method()
{
      throw new RuntimeException("exception message");
}
public void testException()

      try
      {
         method();
         fail();
      }
      catch(Exception e)
      {
         assertTrue(true);/或者此处不写
      }

      通过这种测试,可以测试方法中是否会达到期望的要求,在方法出现预期中的异常时是否会抛出该异常,若没有像期望的一样抛出异常,则单元测试会运行到"fail();"使得单元测试不会通过。正常情况下是没有问题的。但是有的时候方法内部会有多个子方法抛出同一个异常(或者说抛出的多个异常都继承于同一个异常类),因此这个时候我们必须定位到是哪个子方法抛出的异常,而通过以上方法是不能达到这个目标的。为了达到这个目标,可以通过判断异常中的信息来判断是哪个子方法出错。通常,程序员会在抛出异常时会将产生该异常的原因写入异常信息中,如:new Exception(message)。因此,我们只要在单元测试中能捕捉到该异常信息,往往就能定位到该异常出现的位置。
只需要将以上测试的catch块中的语句改为如下语句即可:
assertTrue(e.toString().contains(exception message));




posted on 2006-12-06 12:03 阿辉 阅读(526) 评论(0)  编辑  收藏 所属分类: 学习日志


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


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问  
 

My Links

Blog Stats

常用链接

留言簿(1)

随笔分类

随笔档案

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜