介紹
單元測試框架在面向?qū)ο蟮?a target="_blank">編程世界中非常流行。JUnit(用于 Java)、SUnit(用于 Smalltalk)和 CppUnit(用于 C++)等框架提供了豐富的功能集。 但是,對于想要在更受限制的環(huán)境(例如用 C 編寫的嵌入式系統(tǒng))中進(jìn)行單元測試的人來說,這組豐富的功能可能會令人生畏。 但是單元測試的重要之處在于測試,而不是框架。MinUnit 是一個 用 C 語言編寫的極其簡單的單元測試框架。它不使用內(nèi)存分配,因此它幾乎可以在任何情況下正常工作,包括 ROMable 代碼。
源代碼
/* file: minunit.h */ #define mu_assert(message, test) do { if (!(test)) return message; } while (0) #define mu_run_test(test) do { char *message = test(); tests_run++; if (message) return message; } while (0) extern int tests_run;不,這不是一個錯字。這只是 3 行代碼(這里是 4 行,因?yàn)槲覔Q了很長的一行。)
設(shè)置測試用例
MinUnit 測試用例只是一個函數(shù),如果測試通過則返回 0(null)。如果測試失敗,該函數(shù)應(yīng)該返回一個描述失敗測試的字符串。 mu_assert 只是一個宏,如果傳遞給它的表達(dá)式為假,則返回一個字符串。mu_runtest 宏調(diào)用另一個測試用例并在該測試用例失敗時返回。這里的所有都是它的!
例子
下面的示例運(yùn)行兩個測試,一個通過,一個失敗。
/* file minunit_example.c */ #include#include "minunit.h" int tests_run = 0; int foo = 7; int bar = 4; static char * test_foo() { mu_assert("error, foo != 7", foo == 7); return 0; } static char * test_bar() { mu_assert("error, bar != 5", bar == 5); return 0; } static char * all_tests() { mu_run_test(test_foo); mu_run_test(test_bar); return 0; } int main(int argc, char **argv) { char *result = all_tests(); if (result != 0) { printf("%s ", result); } else { printf("ALL TESTS PASSED "); } printf("Tests run: %d ", tests_run); return result != 0; }
結(jié)論
人們認(rèn)為編寫單元測試框架必須很復(fù)雜。事實(shí)上,正如本技術(shù)說明所示,您只需幾行代碼即可編寫一個。當(dāng)然,如果您可以訪問像 JUnit 這樣的全功能測試框架,請務(wù)必使用它。 但如果你不這樣做,你仍然可以使用像 MinUnit 這樣的簡單框架,或者在幾個小時內(nèi)創(chuàng)建你自己的框架。沒有理由不進(jìn)行單元測試。
審核編輯:湯梓紅
-
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
41文章
3683瀏覽量
131404 -
C語言
+關(guān)注
關(guān)注
180文章
7632瀏覽量
141791 -
字符串
+關(guān)注
關(guān)注
1文章
590瀏覽量
22292 -
C++
+關(guān)注
關(guān)注
22文章
2119瀏覽量
75329 -
單元測試
+關(guān)注
關(guān)注
0文章
50瀏覽量
3318
原文標(biāo)題:用在嵌入式開發(fā)中的單元測試框架
文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
Tessy嵌入式軟件單元測試/ 集成測試工具的相關(guān)資料分享
嵌入式需不需要單元測試?
單元測試/集成測試自動化工具--WinAMS
如何提高嵌入式軟件單元測試效率
使用C++構(gòu)建嵌入式開發(fā)框架
嵌入式需要單元測試嗎?
慕課嵌入式系統(tǒng)(第六章.單元測試5)

慕課嵌入式開發(fā)及應(yīng)用(第二章.單元測試)

慕課嵌入式開發(fā)及應(yīng)用(第一章.單元測試)

慕課嵌入式開發(fā)及應(yīng)用(第三章.單元測試)

評論