準備 - 執行 - 斷言(arrange - act - assert)
這個流程是:準備用於測試的物件 - 觸發執行 - 對輸出進行斷言
怎麼寫測試是個問題,寫多少測試,也一直是個問題。這裡我們給出乙個建議:
檢查行為,而非實現。
具體來說,我們應該跳出具體的實現,把關注點放在我們期望類有怎樣的行為上,不應該讓實現主導測試,而應該讓需求,讓設計主導測試。這裡就接上了我們之前說的 測試先行 的問題,如果測試後於實現,我們將不可避免的對一些實現**編寫測試,而在設計編碼之前編寫測試,則能讓我們的測試只關心具體需求的實現,進而指導設計。
總的來說,我們一定要避免對於過於細緻的實現進行過多的測試,這樣會使我們的系統「動彈不得」,任何乙個小的修改都會導致測試報錯,讓我們陷入過多無意義的排錯當中去。
下面我們看乙個例子來具體感受一下者三個過程:
使用nuget安裝moq
編寫**
public class internettest
}public inte***ce ifoo
public class a
public bool test(string s)
}
在上面的例子中,我們看到了 準備 - 執行 - 斷言(arrange - act - assert)的實現方式,在行為驅動開發的領域也有相似的東西:given - when - then,這種形容更加的符合人的自然思考流程,所以我們在編寫測試的時候應該盡量的按照這種模式來編寫測試。
編寫優秀的單元測試(六)編寫可讀的測試
網上有乙個段子,說程式設計師最煩做的兩件事情,乙個是寫文件,乙個是寫注釋。程式設計師最煩別人不做的兩件事情,乙個是不寫文件,乙個是不寫注釋。這裡提到了程式開發裡面的乙個最基本的事實 讀 比寫 難。這也是我們經常在工作中重構的原因,因為我們經常覺得有看那些 的時間,我都重寫一遍了。說這些是為了告訴我們...
編寫優秀的單元測試(二)測試先行
測試先行就是我們常說的測試驅動開發 tdd 測試先行的實踐方式是在接到乙個新功能的時候,先寫乙個測試,這個測試一定會失敗,然後編寫 使得測試成功,然後再寫下乙個測試,有點像是填坑的方式進行開發。傳統的開發方式是 設計 開發 測試 如此往復 測試先行的開發方式是 測試 重構 如此往復 下圖指示了設計先...
單元測試 單元測試編寫的原則
公司要求提公升單元測試的質量,其中我作為方案和推動的主導,對開發過程中的單元測試,有了一些思考和總結 單元測試編寫的目的,是面向計算機特性的,基於函式的in out,所以單元測試的好幫手就是斷言,通過不斷的構造輸出並對結果進行斷言,我們就可以針對乙個物件以及它的函式,構建出充足的用例去包裹它,以期望...