我有以下代碼:C#最佳實踐:引用其他方法的單元測試代碼?
public static String GetHashString(this HashAlgorithm algorithm, Stream inputStream)
{
if (algorithm == null)
throw new ArgumentNullError("algorithm");
if (inputStream == null)
throw new ArgumentNullError("inputStream");
Byte[] bytes = algorithm.ComputeHash(inputStream);
//Convert the bytes into a hash string
String result = ...;
return result;
}
我想知道幾件事情:
望着Microsoft.NET4
HashAlgorithm.ComputeHash(Stream inputStream)
方法我可以看到 有一個異常 可能會回來。在這種情況下練習 行Byte[] bytes = algoirthm.ComputeHash(inputStream)
這是一個最好的 與try-catch塊嗎?我問 ,因爲在我看來,如果該 線引發異常,我可以讓 呼叫我的擴展處理錯誤 捕捉。或者,它應該是 try-catch包裹着簡單的 扔。此外,在單元測試,我單位 測試所有可能的例外, 包括那些可能來自 其他方法?特別是在這 的情況下...是最佳做法嗎?在這 的情況下,我只需要 預計
ObjectDisposeException
。 但我想知道 的情況,我打電話的方法可能會拋出 回10個不同的例外。由於我 在這些例外情況下並不真正改變我的輸出 ,我不認爲 有必要單元測試導致相同 結果的所有不同 類型的故障。我想這是否正確?最後,我不知道是否是 必要甚至檢查 的inputStream被空,如果
HashAlgorithm.computeHash(Stream inputStream)
方法甚至沒有做 如此。
好吧,如果.NET拋出一個異常,如果InputStream爲空,我應該甚至麻煩檢查它?我應該讓.NET拋出異常,而不是我這樣做? – michael 2011-01-20 16:25:29