單元測試可以更快地發現**中的錯誤,因此各個程式語言都擁有了專門的單元測試框架。本文按照一般的開發流程來討論單元測試框架,即需求分析、設計實現,應用模型等等,希望可以提取單元測試的共性,為理解不同的測試框架提供支援。
從單元測試的機制可以發現一部分隱藏需求,總結如下:
滿足以上幾點,單元測試甚至可以作為乙個可以執行的規格說明和文件。
現有的單元測試一般由乙個軟體框架支援,提供對需求的基本支援,以gtest為例:
測試框架的序列圖如上,其中fixture是需要使用者定製的測試場景,最簡單的情況就是場景中只有待測系統sut,而且不需要設定,例如測試乙個函式時的情況。
軟體框架只有定製以後,才能發揮作用。對於不同應用場景的定製,仍然遵循一般的軟體原則,例如模組化,dry(不要重複自己),開閉原則(對修改封閉,對擴充套件開放)等等。需要強調的是:
可測試性設計:方便設定測試替身,盡可能減少不可測**。
開發單元測試框架仍然需要遵守一般的開發規範,因此從框架規範中整理出框架背後的需求、設計和實現的一些內容,對於理解和執行單元測試,可以提供額外的幫助。
[1] gerard meszaros,xunit test patterns : refactoring test code,pearson education, inc, 2007
[2] gtest,
[3] gtest,
單元測試流程
在.net的研發中,我們一般採用nunit rhino.mocks的雙組合框架實現測試用例的編寫。對於常用的service發放的單元測試,我們一般需要建立乙個抽象的servicetest來做一些公共的事情。比如mock一些公共的倉儲,應用程式上下文等。testfixture public abstr...
測試開發 XCTest iOS單元測試框架
xctest 是ios的單元測試框架,有objective c和swift兩種語言可以選擇 xcuitest 是ios的ui測試框架 xctest 框架類似於python中的unit test框架,宣告乙個測試case繼承xctestcase和測試方法,測試方法以test開頭,然後執行。xctest...
go Test 單元測試 測試框架
1.建立乙個名為 test.go 的檔案 如果是包中的單元測試,就在包所在目錄下建立該檔案 並將下面的 新增到其中,函式命名統一為test t testing.t package main 包中的單元測試main替換成包名 import testing func testsum t testing....