單元測試工具整理

狹義的單元測試是測試自動化的一種,用代碼的方式測試軟件的某一個可測試的部分。

想要做好單元測試,不僅需要一個測試框架,還需要一系列的配套工具。

工具分類

實際上,做單元測試的工具和做測試自動化的工具沒有本質(zhì)區(qū)別,因此我們統(tǒng)一使用測試自動化工具的分類來進(jìn)行介紹。

  1. X-Unit工具,最基礎(chǔ)的工具,用來定義測試用例框架和擴(kuò)展機(jī)制。功能主要有:定義用例、運(yùn)行用例、收集測試結(jié)果、對用例進(jìn)行標(biāo)記、框架擴(kuò)展。

  2. 斷言工具,簡化預(yù)期結(jié)果和實際結(jié)果的比較驗證,當(dāng)錯誤發(fā)生時收集錯誤現(xiàn)場,給出準(zhǔn)確的原因描述,最好能達(dá)到看消息就能知道錯在哪里,而不必再次運(yùn)行和調(diào)試用例。另外在簡單的字符串比較之外,還要支持多種運(yùn)算操作比較、結(jié)構(gòu)化報文比較。

  3. 造數(shù)工具,方便通過規(guī)則生成多種多樣的業(yè)務(wù)數(shù)據(jù),并且要符合邏輯性。能在框架的基礎(chǔ)上實現(xiàn)數(shù)據(jù)驅(qū)動測試。

  4. Mock,支持打樁和模擬,避免修改源碼。

  5. 操縱測試對象的工具,如操作待測試軟件、數(shù)據(jù)庫、文件系統(tǒng)、網(wǎng)絡(luò)、系統(tǒng)時鐘等等。

xUnit

Java:目前常用Junit5,要比Junit4更簡便。如果喜歡動態(tài)編程,那么Groovy、Spock也是不錯的選擇。

CPP:Google Test、Catch2,老代碼中可能還會用CppUnit。

斷言

Java體系中有很多額外斷言工具:Hamcrest、AssertJ、Xml Unit、Json Unit等。單用Groovy編程語言也可以達(dá)到專門斷言工作的效果。

CPP:Google Test自帶的斷言。

Mock

Java:Mockito目前還在活躍,PowerMock特有的功能Mockito也在逐漸支持。

CPP:Google Mock等。

操縱測試對象

Java專用的有:

  • DbUnit,專門針對數(shù)據(jù)庫的測試工具,可以在測試前準(zhǔn)備好數(shù)據(jù)庫狀態(tài),在測試后清理數(shù)據(jù)庫。

  • System Stubs,用于測試帶有java.lang.System相關(guān)依賴的邏輯,方便管理環(huán)境變量、系統(tǒng)屬性、標(biāo)準(zhǔn)輸入輸出等。

通用的有Test Containers、faketime。

Test Containers將常見中間件封裝成測試容器,方便啟停和配置。還有常見云服務(wù)的模擬版本,如LocalStack。

faketime用于攔截系統(tǒng)時鐘調(diào)用,方便進(jìn)行時間敏感的測試。

除了通用的工具外,每種通用軟件都會提供專門的工具方便用在測試場景中。

更高層次的工具

xUnit之外還有一些新的測試自動化工具,如Robot Framework、Cucumber、Karate等。它們脫胎于xUnit,但在此基礎(chǔ)上增加了DSL、數(shù)據(jù)驅(qū)動、行為驅(qū)動等功能,讓測試工具超出單元測試的范疇。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容