C#測試假設條件
C#測試還是比較常見的東西,這里我們主要介紹C#測試假設條件,包括介紹大多數(shù)程序的bugs出現(xiàn)在程序員之間的接口等方面。
NET Framework中包含許多工具可以用來更快、更容易地編寫正確的程序。但我們得面臨這樣的情況:出現(xiàn)bugs。不管程序多么簡單,程序員都可能出錯。根據(jù)我的經(jīng)驗,大多數(shù)程序的bugs出現(xiàn)在程序員之間的接口:當一個程序員編寫的代碼被另一個程序員調(diào)用時。不知何故,調(diào)用者破壞了代碼編寫時做的假設。是誰的過錯呢?這并不要緊,更重要的是你能多快修好它?下面這些技巧將幫你在程序投入使用前更快地發(fā)現(xiàn)并解決這些問題。最終,技巧會幫你診斷任何的確在使用中出現(xiàn)的問題。
C#測試假設條件
C#測試假設條件是構建正確的程序最重要的一個方法。在你寫一個函數(shù)時,你應該考慮并確定你對那個函數(shù)做了什么樣的假設。你應該問自己以下這些問題:
1. 當這個函數(shù)被調(diào)用時,這個對象必須是怎樣的(對象初試化,某個內(nèi)在變量值)?
2. 當這個函數(shù)存在時,這個對象將會怎樣(仍是#1,但包括該函數(shù)的副作用)?
3. 該函數(shù)的任何參數(shù)必須是怎樣的(允許空值嗎,輸入值的范圍是什么)?
4. 返回值必須是怎樣的?
一旦你問了自己這四個問題并作出回答后,把答案放到代碼中。在C#中,用System.Diagnostics.Debug類的Assent方法來表示:
- public bool ProcessIterations (int
- numIters)
- {
- Debug.Assert (numIters > 0,
- "ProcessIterations.",
- "Iterations must be more than 0");
- // More code...
該代碼片段執(zhí)行了numiters參數(shù)必須大于零這樣一個假設。如果你用一個無效的參數(shù)調(diào)用processiterations,該assert被觸發(fā)。這時候,程序停止運行并通知用戶出現(xiàn)的錯誤。聲明(assertions)只被編譯到debug 版本中的程序,所以它們不影響生產(chǎn)情況中的性能。
為什么用這種方法? 運用這種技巧可以確保很快地發(fā)現(xiàn)對你的類的方法未預料地使用。然后,或者調(diào)用者修改他的代碼,或者要求在你的類的行為(behavior)中修改。
【編輯推薦】