日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > > 大橙子瘋嵌入式


前言

軟件開(kāi)發(fā)中,每次需求的變更基本都需要改寫(xiě)代碼,而代碼變更后就需要進(jìn)行功能測(cè)試,當(dāng)然在功能測(cè)試之前需要代碼的單元測(cè)試,避免代碼改動(dòng)后部分場(chǎng)景沒(méi)有驗(yàn)證,最后出現(xiàn)各種問(wèn)題。

通過(guò)測(cè)試框架快速完成代碼的單元測(cè)試,不僅可以覆蓋之前測(cè)試的場(chǎng)景,也能快速反應(yīng)問(wèn)題在哪里

常用的C語(yǔ)言測(cè)試框架有

  • Unity:一個(gè)小型的,開(kāi)源的C語(yǔ)言測(cè)試框架,提供了用于測(cè)試的基本結(jié)構(gòu)和函數(shù)。簡(jiǎn)單好用,常用于嵌入式系統(tǒng)開(kāi)發(fā)。

  • CUnit:一個(gè)面向C語(yǔ)言測(cè)試的框架,使用簡(jiǎn)單,支持自動(dòng)化測(cè)試和手動(dòng)測(cè)試。

  • Check:適用于C語(yǔ)言的單元測(cè)試框架,使用簡(jiǎn)單,支持測(cè)試套件、測(cè)試用例的管理,便于維護(hù)測(cè)試組件。

  • Google Test:Google推出的C++測(cè)試框架,支持C語(yǔ)言,可以跨平臺(tái),具有豐富的斷言庫(kù)和Mocks。

  • cmocka:適用于C語(yǔ)言的單元測(cè)試框架,支持內(nèi)存泄漏檢測(cè),支持Mock函數(shù)和Stub函數(shù)等高級(jí)用法。

  • criterion:基于C語(yǔ)言的單元測(cè)試框架,支持參數(shù)化測(cè)試和測(cè)試用例依賴,具有良好的性能和易用性。

介紹

這里介紹Unity,其他的可以自行查閱,不同的單元測(cè)試框架適用于不同的開(kāi)發(fā)需求和場(chǎng)景。開(kāi)發(fā)人員可以按照自己的項(xiàng)目要求選擇最適合的框架。

Unity最小可以只用到幾個(gè)文件即可完成,把Unity源碼目錄下的unity.c、unity.h、unity_internals.h三個(gè)文件復(fù)制至我們的工程目錄下進(jìn)行編譯即可,然后在測(cè)試文件代碼中包含unity.h

https://github.com/ThrowTheSwitch/Unity/releases

簡(jiǎn)單的示例
完成功能函數(shù)的驗(yàn)證

#include  #include "unity.h" void setUp() { // 這里可以放置每個(gè)測(cè)試用例運(yùn)行前的初始化代碼 } void tearDown() { // 這里可以放置每個(gè)測(cè)試用例運(yùn)行后的清理代碼 } int Add(int a, int b) { return a + b;
} void test_AddFun(void) {
 TEST_ASSERT_EQUAL_UINT(6, Add(1, 5));
 TEST_ASSERT_EQUAL_UINT(4, Add(-1, 5));
 TEST_ASSERT_EQUAL_UINT(-6, Add(-1, -5));
} int main() {
 UNITY_BEGIN(); // 啟動(dòng)測(cè)試 RUN_TEST(test_AddFun);
 UNITY_END(); // 結(jié)束測(cè)試 return 0;
} 

通過(guò)串口或終端打印內(nèi)容為:

C:\test/test.c:47:test_AddFun:PASS

----------------------- 1 Tests 0 Failures 0 Ignored
OK

其中,unity_internals.h文件中可以修改輸出終端,即UNITY_OUTPUT_CHAR宏的定義

/*-------------------------------------------------------
 * Output Method: stdout (DEFAULT)
 *-------------------------------------------------------*/ #ifndef UNITY_OUTPUT_CHAR /* Default to using putchar, which is defined in stdio.h */ #include  #define UNITY_OUTPUT_CHAR(a) (void)putchar(a) #else /* If defined as something else, make sure we declare it here so it's ready for use */ #ifdef UNITY_OUTPUT_CHAR_HEADER_DECLARATION extern void UNITY_OUTPUT_CHAR_HEADER_DECLARATION; #endif #endif 

下載鏈接

其中自定義實(shí)現(xiàn)的C語(yǔ)言擴(kuò)展庫(kù)(cot)的容器功能函數(shù)都已通過(guò)Unity添加了對(duì)應(yīng)的單元測(cè)試用例,有興趣的朋友可以參考:

下載鏈接(點(diǎn)擊閱讀原文):https://gitee.com/const-zpc/cot


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉