我試圖避免一個脆弱的測試。我想斷言一個方法在傳入無效數據時拋出一個異常,我不關心哪一個。在MSTests中可以捕獲任何異常嗎?
以String.IsNullOrEmpty爲例,如果字符串爲空,則不想拋出nullreference異常嗎?如果它爲空,我想你可以拋出一個argumentException。我不認爲爲null和empty分開使用單獨的保護條款是個好主意,不管我希望能夠斷言我的單元拋出異常。
使用[ExpectedException(typeof(Exception))]
給出了一個錯誤,說明異常類型必須從異常繼承。如果沒有異常拋出,我的解決方案是一個帶有Assert.Fail的try/catch塊。有更好的/更清潔的方式嗎?
我想我可以看到捕獲特定異常的優點,在這種情況下,我最感興趣的是因爲我沒有什麼好的處理字符串空(空引用異常?)vs字符串空(理論假設)範式,並認爲在這種情況下忽略異常類型並確保引發異常會很好。使測試更加脆弱,但冒着失敗原因錯誤的風險。我想其他測試會抓住'其他原因' – Maslow 2010-02-03 13:36:12
如果測試失敗的原因錯誤,測試不會變得脆弱嗎?測試肯定會少一些「值得信賴」。 – JChristian 2010-02-03 17:33:31