<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

用在嵌入式開發中的單元測試框架

STM32嵌入式開發 ? 來源:jera.com ? 2023-03-27 10:08 ? 次閱讀

介紹

單元測試框架在面向對象的編程世界中非常流行。JUnit(用于 Java)、SUnit(用于 Smalltalk)和 CppUnit(用于 C++)等框架提供了豐富的功能集。 但是,對于想要在更受限制的環境(例如用 C 編寫的嵌入式系統)中進行單元測試的人來說,這組豐富的功能可能會令人生畏。 但是單元測試的重要之處在于測試,而不是框架。MinUnit 是一個 用 C 語言編寫的極其簡單的單元測試框架。它不使用內存分配,因此它幾乎可以在任何情況下正常工作,包括 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 行,因為我換了很長的一行。)

設置測試用例

MinUnit 測試用例只是一個函數,如果測試通過則返回 0(null)。如果測試失敗,該函數應該返回一個描述失敗測試的字符串。 mu_assert 只是一個宏,如果傳遞給它的表達式為假,則返回一個字符串。mu_runtest 宏調用另一個測試用例并在該測試用例失敗時返回。這里的所有都是它的!

例子

下面的示例運行兩個測試,一個通過,一個失敗。


 /* 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;
 }

結論

人們認為編寫單元測試框架必須很復雜。事實上,正如本技術說明所示,您只需幾行代碼即可編寫一個。當然,如果您可以訪問像 JUnit 這樣的全功能測試框架,請務必使用它。 但如果你不這樣做,你仍然可以使用像 MinUnit 這樣的簡單框架,或者在幾個小時內創建你自己的框架。沒有理由不進行單元測試。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式系統
    +關注

    關注

    40

    文章

    3448

    瀏覽量

    128411
  • C語言
    +關注

    關注

    180

    文章

    7548

    瀏覽量

    131342
  • 字符串
    +關注

    關注

    1

    文章

    553

    瀏覽量

    20232
  • C++
    C++
    +關注

    關注

    21

    文章

    2068

    瀏覽量

    72983
  • 單元測試
    +關注

    關注

    0

    文章

    35

    瀏覽量

    3093

原文標題:用在嵌入式開發中的單元測試框架

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    單元測試/嵌入式軟件系統測試技術專題培訓

    從事軟件開發測試教學、科研方面老師。五、培訓大綱:嵌入式軟件系統測試專題安排:(望來電來函咨詢)單元測試專題安排:(望來電來函咨詢)七、授
    發表于 05-29 13:31

    適合于嵌入式系統的C語言單元測試框架是什么

    工程沒有合適的測試框架。本文發布一種簡單的C語言測試框架CUNIT,可以應用于嵌入式領域。
    發表于 12-15 08:10

    如何搭建嵌入式C語言單元測試自動化框架

    關于嵌入式C語言單元測試自動化框架的搭建思路
    發表于 12-15 07:35

    Tessy嵌入式軟件單元測試/ 集成測試工具的相關資料分享

    Tessy — 嵌入式軟件單元測試/ 集成測試工具本文章向大家介紹Tessy — 嵌入式軟件單元測試/ 集成
    發表于 12-21 07:11

    嵌入式需不需要單元測試?

    前言嵌入式行業摸爬滾打這幾年,遇見有規范單元測試的項目寥寥無幾。歸根到底,無非是公司希望快速迭代出產品,有問題等客戶反饋再說。當然,也有人認為是嵌入式行業都是小而美的產品居多,沒有到一定...
    發表于 12-21 08:16

    如何在.NET單元測試中使用嵌入式資源

    目錄介紹背景使用代碼下載源22.4 KB介紹有時,單元測試的邏輯要求使用嵌入到庫的資源。最有可能的是,該文件保留了黑盒的初始數據,并已通過單元測試進行了
    發表于 12-21 07:31

    Java與'嵌入式' PostgreSQL數據庫單元測試的相關資料分享

    在我們對數據庫 DAO 類進行單元測試時,通常不應該依賴于一個外部數據庫,所以會選用特定比較接近于真實數據庫類型的內存或嵌入式數據庫,如 HSQLDB(HyperSQL), H2, Derby 等
    發表于 12-21 07:56

    單元測試/集成測試自動化工具--WinAMS

    為單位的自動化單元測試工具作為能夠檢驗出僅憑系統測試以及整體測試無法發現的[潛在錯誤]的檢測方法,[單元測試]在嵌入式開發領域受到廣泛重視。
    發表于 06-17 18:26

    如何提高嵌入式軟件單元測試效率

    在本指南中,您將學習如何通過在更短的時間內運行更多的測試來增加您的單元測試吞吐量。 這種效率的提高來自于使用虛擬平臺而不是物理硬件作為開發平臺。 本指南對任何開發或運行
    發表于 08-28 06:31

    使用C++構建嵌入式開發框架

    使用C++構建嵌入式開發框架
    發表于 10-25 11:25 ?17次下載
    使用C++構建<b class='flag-5'>嵌入式開發</b><b class='flag-5'>框架</b>

    嵌入式需要單元測試嗎?

    前言 嵌入式行業摸爬滾打這幾年,遇見有規范單元測試的項目寥寥無幾。歸根到底,無非是公司希望快速迭代出產品,有問題等客戶反饋再說。當然,也有人認為是嵌入式行業都是小而美的產品居多,沒有到一定量級之前
    的頭像 發表于 10-23 16:08 ?2085次閱讀

    慕課嵌入式系統(第六章.單元測試5)

    慕課電子科技大學.嵌入式系統.第六章.嵌入式軟件系統.單元測試50 目錄6 嵌入式軟件系統6.4 單元測試56.4.1課堂重點6.4.2
    發表于 10-20 19:21 ?4次下載
    慕課<b class='flag-5'>嵌入式</b>系統(第六章.<b class='flag-5'>單元測試</b>5)

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

    慕課蘇州大學.嵌入式開發及應用.第二章.入門與軟件框架.單元測試0 目錄2 入門與軟件框架2.10 單元測試2.10.1 課堂重點2.10.
    發表于 11-02 19:21 ?15次下載
    慕課<b class='flag-5'>嵌入式開發</b>及應用(第二章.<b class='flag-5'>單元測試</b>)

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

    慕課蘇州大學.嵌入式開發及應用.第一章.基礎與硬件.單元測試0 目錄1 基礎與硬件1.1 單元測試1.1.1課堂重點1.1.2測試與作業2 下一章0 目錄1 基礎與硬件1.1
    發表于 11-02 21:06 ?17次下載
    慕課<b class='flag-5'>嵌入式開發</b>及應用(第一章.<b class='flag-5'>單元測試</b>)

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

    慕課蘇州大學.嵌入式開發及應用.第三章.基本模塊.單元測試0 目錄3 基本模塊3.11 單元測試3.11.1 課堂重點3.11.2 測試與作業4 下一章0 目錄3 基本模塊3.11
    發表于 11-03 12:36 ?15次下載
    慕課<b class='flag-5'>嵌入式開發</b>及應用(第三章.<b class='flag-5'>單元測試</b>)
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>