0
我有一些庫的內部邏輯。之前我用這樣的表述來檢查我的內在邏輯的輸入數據:Debug.Assert在異常單元測試中
if (value < 0)
throw new ArgumentOutOfRangeException("value");
但我的圖書館十分性能sensetive,所以現在我使用這樣的表達式只爲我的API來檢查用戶輸入。 我的內部代碼的內部輸入與Debug.Assert一起檢查,以在發佈中節省幾個性能。
但現在,我的內部代碼檢查無效輸入的單元測試不起作用。通過Debug.Assert,沒有任何異常。 那麼如何在我的單元測試中檢查Debug.Assert?
嗯,它不能因爲你實際上沒有任何形式的檢查。你有沒有考慮過使用[CodeContracts](https://github.com/Microsoft/CodeContracts)來使你的代碼可以只採取有效的輸入?它應該像Debug.Assert一樣工作,所以代碼在發佈版本中不會存在,但是你可以證明你的代碼沒有傳入一個無效的值。 –
當我說「你實際上沒有任何形式的檢查」時,我的意思是你的單元測試可能與程序的「發佈」版本工作,當處於發佈模式時,System.Diagnostics.Debug類中的所有函數成爲NO-OP,不做任何事情。 –
@ScottChamberlain非常感謝!代碼合同正是我所需要的! –