love fish大鵬一曰同風(fēng)起,扶搖直上九萬(wàn)里

          常用鏈接

          統(tǒng)計(jì)

          積分與排名

          friends

          link

          最新評(píng)論

          如何測(cè)試異常?

          ?在寫(xiě)單元測(cè)試時(shí),如何寫(xiě)異常的測(cè)試是很多人的難題。很多書(shū)建議使用如下方法進(jìn)行測(cè)試:
          public void method()
          {
          ??????throw new RuntimeException("exception message");
          }
          public void testException()

          ??????try
          ??????{
          ?????????method();
          ?????????fail();
          ??????}
          ??????catch(Exception e)
          ??????{
          ?????????assertTrue(true);/或者此處不寫(xiě)
          ??????}

          ??????通過(guò)這種測(cè)試,可以測(cè)試方法中是否會(huì)達(dá)到期望的要求,在方法出現(xiàn)預(yù)期中的異常時(shí)是否會(huì)拋出該異常,若沒(méi)有像期望的一樣拋出異常,則單元測(cè)試會(huì)運(yùn)行到"fail();"使得單元測(cè)試不會(huì)通過(guò)。正常情況下是沒(méi)有問(wèn)題的。但是有的時(shí)候方法內(nèi)部會(huì)有多個(gè)子方法拋出同一個(gè)異常(或者說(shuō)拋出的多個(gè)異常都繼承于同一個(gè)異常類(lèi)),因此這個(gè)時(shí)候我們必須定位到是哪個(gè)子方法拋出的異常,而通過(guò)以上方法是不能達(dá)到這個(gè)目標(biāo)的。為了達(dá)到這個(gè)目標(biāo),可以通過(guò)判斷異常中的信息來(lái)判斷是哪個(gè)子方法出錯(cuò)。通常,程序員會(huì)在拋出異常時(shí)會(huì)將產(chǎn)生該異常的原因?qū)懭氘惓P畔⒅校纾簄ew Exception(message)。因此,我們只要在單元測(cè)試中能捕捉到該異常信息,往往就能定位到該異常出現(xiàn)的位置。
          只需要將以上測(cè)試的catch塊中的語(yǔ)句改為如下語(yǔ)句即可:
          assertTrue(e.toString().contains(exception message));

          posted on 2007-01-18 15:52 liaojiyong 閱讀(345) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Testing

          主站蜘蛛池模板: 贵德县| 五大连池市| 六安市| 南昌市| 巴南区| 漯河市| 溧阳市| 南丹县| 元朗区| 德州市| 黄陵县| 集贤县| 信丰县| 孟州市| 临武县| 遂平县| 原阳县| 宝丰县| 驻马店市| 徐闻县| 泰安市| 保康县| 尚志市| 托克逊县| 彰化市| 独山县| 嘉鱼县| 如皋市| 财经| 海口市| 延寿县| 沅陵县| 新乐市| 康定县| 黎城县| 宜春市| 蓝山县| 德江县| 嘉义市| 黄骅市| 阿拉善右旗|