我在和Pex和Moles玩耍,Pex發現幾乎所有的Pex表示失敗的測試都是因爲NullReferenceExceptions是「允許的」。讀取的Pex文檔,我橫跨以下就來了:是否允許NullReferenceExceptions發生壞事的可能性?
如果更高級別的分量通過 畸形數據到較低級別的 組件,其中較低級的 組件拒絕,則 更高級別的組件應該是 在第一個 的地方阻止這樣做。
那麼上面的建議是,我們應該測試等方法/班前空值使用類似叫做:空值遍不上訴的,那麼多的
if(foo == null)
throw new ArgumentNullException("its null and this shouldn't happen")
else
Bar(foo); //won't get a null reference exception here because we checked first...
恕我直言檢查性能和代碼膨脹的原因,但我想聽聽其他人有什麼要說......
我完全同意喬恩。你應該檢查那些不在你控制範圍內的參數。在驗證公用方法的參數時,不需要對私有方法的參數執行這些檢查。 – 2011-03-17 12:15:56
+1提私人方法..我不知道! – 2011-03-17 12:19:43
好的,所以每當Pex說它遇到一個NullReferenceException,我應該做一個空測試並拋出一個ArgumentNullException在該方法的頂部? – Calanus 2011-03-17 16:04:13