C語言 x-unit 測(cè)試工具

除了可以復(fù)用 C++ 的測(cè)試工具外,還有一些專為 C 語言設(shè)計(jì)的測(cè)試工具。

GTest

Google Test(GTest)是 Google 開發(fā)的一個(gè) C++ 測(cè)試框架,但也可以用于測(cè)試 C 代碼。GTest 提供了豐富的斷言和測(cè)試功能,支持自動(dòng)化測(cè)試和測(cè)試套件的組織。

較新的 C 工程使用 GTest 也是不錯(cuò)的選擇。

Check

https://libcheck.github.io/check/

主要針對(duì) *Nix 系統(tǒng)設(shè)計(jì),支持輸出多種格式的測(cè)試報(bào)告,并支持段錯(cuò)誤偵測(cè)。

2020 年 8 月 7 日發(fā)布了 0.15.2 版,采用 LGPL 協(xié)議。

CMocka

極簡(jiǎn)設(shè)計(jì),僅用到標(biāo)準(zhǔn) C 庫(kù),支持 mock 對(duì)象,適用于嵌入式平臺(tái)。

—— https://cmocka.org/

Unity

專為嵌入式軟件設(shè)計(jì),采用標(biāo)準(zhǔn) ANSI C 編寫,支持從 8 位微控制器到 64 位處理器的高效運(yùn)行。
Unit Testing for C,especially Embedded Software。

—— https://www.throwtheswitch.org/unity

C 語言下如何做 mock

  1. 代碼設(shè)計(jì)時(shí)采用依賴注入方法,方便測(cè)試代碼替換實(shí)現(xiàn)。基本思路是:原本直接函數(shù)耦合調(diào)用的地方,通過結(jié)構(gòu)體中的函數(shù)指針來調(diào)用。測(cè)試時(shí)替換結(jié)構(gòu)體中的函數(shù)指針即可實(shí)現(xiàn) mock。
  2. 使用宏定義的方式進(jìn)行切換,對(duì)代碼的要求較高。
  3. 利用鏈接器的替換功能,編譯時(shí)鏈接測(cè)試版本的函數(shù)實(shí)現(xiàn)來替換原有的函數(shù)實(shí)現(xiàn)。必須逐個(gè)進(jìn)行替換。

這三種方式可以滿足絕大多數(shù)場(chǎng)景。更何況現(xiàn)在有大模型輔助,做單元測(cè)試不是浪費(fèi)時(shí)間,而是讓軟件質(zhì)量檢查能夠跟上大模型輔助編程的步伐。

為什么C語言xunit測(cè)試會(huì)單列

很多嵌入式軟件在用純C編寫,編譯也是針對(duì)特定平臺(tái)的交叉編譯,類庫(kù)也和linux等平臺(tái)不兼容,所以 C 語言會(huì)有自己的專門測(cè)試工具。在不能用gtest的時(shí)候,這些工具就派上用場(chǎng)。

但更多的時(shí)候,C測(cè)試必須設(shè)計(jì)項(xiàng)目專用的測(cè)試工具,這樣更容易測(cè)試和維護(hù)。

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

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

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