皇家方舟

          如何測試異常?

          ??????在寫單元測試時,如何寫異常的測試是很多人的難題。很多書建議使用如下方法進行測試:
          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 阿輝 閱讀(536) 評論(0)  編輯  收藏 所屬分類: 學習日志

          My Links

          Blog Stats

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 乾安县| 松桃| 博白县| 开封市| 井研县| 昂仁县| 五河县| 贡觉县| 霍林郭勒市| 五大连池市| 尼玛县| 霸州市| 抚松县| 高碑店市| 嵊泗县| 米林县| 拉萨市| 平安县| 长宁县| 开远市| 陆川县| 徐闻县| 淮北市| 辽宁省| 成安县| 平利县| 阳东县| 盐城市| 探索| 香格里拉县| 龙川县| 凌海市| 日喀则市| 远安县| 通道| 方正县| 涪陵区| 洱源县| 襄垣县| 永泰县| 铜梁县|