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 这样的简单框架,或者在几个小时内创建你自己的框架。没有理由不进行单元测试。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式系统
    +关注

    关注

    41

    文章

    3563

    浏览量

    129203
  • C语言
    +关注

    关注

    180

    文章

    7597

    浏览量

    136120
  • 字符串
    +关注

    关注

    1

    文章

    577

    浏览量

    20485
  • C++
    C++
    +关注

    关注

    22

    文章

    2104

    浏览量

    73480
  • 单元测试
    +关注

    关注

    0

    文章

    38

    浏览量

    3142

原文标题:用在嵌入式开发中的单元测试框架

文章出处:【微信号:c-stm32,微信公众号:STM32嵌入式开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何搭建嵌入式C语言单元测试自动化框架

    关于嵌入式C语言单元测试自动化框架的搭建思路
    发表于 12-15 07:35

    Tessy嵌入式软件单元测试/ 集成测试工具的相关资料分享

    Tessy — 嵌入式软件单元测试/ 集成测试工具本文章向大家介绍Tessy — 嵌入式软件单元测试/ 集成
    发表于 12-21 07:11

    嵌入式需不需要单元测试

    前言嵌入式行业摸爬滚打这几年,遇见有规范单元测试的项目寥寥无几。归根到底,无非是公司希望快速迭代出产品,有问题等客户反馈再说。当然,也有人认为是嵌入式行业都是小而美的产品居多,没有到一定...
    发表于 12-21 08:16

    单元测试/集成测试自动化工具--WinAMS

    为单位的自动化单元测试工具作为能够检验出仅凭系统测试以及整体测试无法发现的[潜在错误]的检测方法,[单元测试]在嵌入式开发领域受到广泛重视。
    发表于 06-17 18:26

    如何提高嵌入式软件单元测试效率

    在本指南中,您将学习如何通过在更短的时间内运行更多的测试来增加您的单元测试吞吐量。 这种效率的提高来自于使用虚拟平台而不是物理硬件作为开发平台。 本指南对任何开发或运行
    发表于 08-28 06:31

    使用C++构建嵌入式开发框架

    框架作为一种大粒度的重用技术在桌面软件开发得到了广泛应用,而在嵌入式开发领域,目前还没有一套完整的标准框架可供使用。本文以通信领域的
    发表于 05-15 15:42 12次下载

    嵌入式开发

    嵌入式开发就是指在嵌入式操作系统下进行开发嵌入式Linux是以Linux为基础的嵌入式作业系统。这里提供了
    发表于 12-20 13:21
    <b class='flag-5'>嵌入式开发</b>

    使用C++构建嵌入式开发框架

    使用C++构建嵌入式开发框架
    发表于 10-25 11:25 17次下载
    使用C++构建<b class='flag-5'>嵌入式开发</b><b class='flag-5'>框架</b>

    嵌入式需要单元测试吗?

    前言 嵌入式行业摸爬滚打这几年,遇见有规范单元测试的项目寥寥无几。归根到底,无非是公司希望快速迭代出产品,有问题等客户反馈再说。当然,也有人认为是嵌入式行业都是小而美的产品居多,没有到一定量级之前
    的头像 发表于 10-23 16:08 2292次阅读

    什么是单元测试,为什么要做单元测试

    单元测试是整个软件开发过程中的一个重要环节 ,执行一个完备的单元测试方案能够提高整个开发过程的时间效率,确保软件的实际功能与详细设计说明的一致性,使软件
    的头像 发表于 04-28 17:21 9636次阅读

    慕课嵌入式系统(第六章.单元测试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>)

    Tessy—嵌入式软件单元测试/集成测试工具

    搭建测试环境、执行测试、评估测试结果并生成测试报告。目前Tessy被广泛应用在汽车电子客户,在
    的头像 发表于 01-15 14:39 769次阅读
    Tessy—<b class='flag-5'>嵌入式</b>软件<b class='flag-5'>单元测试</b>/集成<b class='flag-5'>测试</b>工具