單元測試的優勢html
- 方便修改代碼且不引人新的bug。
- 可大膽重構,提升代碼的質量和提高我的編碼能力。
- TDD驅動,下降代碼間的耦合,保證代碼質量,快速理清理解代碼.
框架mvc
- 單元測試框架:XUnit 2.2.0。asp.net mvc就是用的這個,此內框架還有:NUnit、MSTest等
- 測試運行工具:xunit.runner.visualstudio 2.2.0。相似如:Resharper的xUnit runner插件。
- 模擬框架:Moq 4.7.10。 asp.net mvc、Orchard使用了。此類框架還有:RhinoMocks、NSubstitute、FakeItEasy等
概念過程:框架
- AAA邏輯順序
-
- 準備(Arrange)對象,建立對象,進行必要的設置
-
-
- Assert(斷言):對方法或屬性的運行結果進行檢測
- Stub(測試存根\樁對象):用返回指定結果的代碼替換方法(去僞造一個方法,阻斷對原來方法的調用,爲了讓測試對象能夠正常的執行)
- Mock(模擬對象):一個帶有指望方法被調用的存根(可深刻的模擬對象之間的交互方式,如:調用了幾回、在某種狀況下是否會拋出異常。mock是一種功能豐富的stub)
好的測試
- 測試即文檔
- 無限接近言簡意賅的天然化語言
- 測試越簡明越好,每一個測試只關注一個點。
- 好的測試足夠快,測試易於編寫,減小依賴
- 好的測試應該相互隔離,不依賴於別的測試,不依賴於外部資源
- 可描述的命名:UnitOfWorkName_ScenarioUnderTest_ExpectedBehavior(命名可團隊約定,我甚至以爲中文命名也沒什麼不能夠的)
-
- UnitOfWorkName 被測試的方法、一組方法或者一組類
-
- Scenario 測試進行的假設條件,例如「登入失敗」,「無效用戶」或「密碼正確」等
-
- ExpectedBehavior 在測試場景指定的條件下,你對被測試方法行爲的預期
原文地址:http://www.cnblogs.com/zhaopei/p/UnitTesting.htmlasp.net