网易首页 > 网易号 > 正文 申请入驻

嵌入式开发:嵌入式TDD框架

0
分享至

  也许单元测试最关键的元素是测试框架。在这篇博文中,我们将讨论在嵌入式开发中C语言的各种选择,并简要分析利弊。

  考虑因素

  Test Runners

  大多数嵌入式编程使用C,下面讨论的所有框架都是针对C或C++的。这本身会带来一些困难。许多单元测试框架利用了被称为“自省”的语言特性。实际上,这是在运行时确定正在执行的程序的结构信息的能力。它对于向框架自我注册的测试非常有用,并广泛用于面向Ruby、Python和Java等语言的框架。

  实际上,这意味着C中的测试框架需要程序员做更多的设置工作。大多数框架需要一个手动编写的“runner”来调用测试套件,这可能会导致错误,例如忘记向runner添加特定的测试。有一些工具可以帮助自动化这个过程,但是它们不在严格的“测试框架”的范围之内——它们本身更类似于完整的构建系统。

  C++有一些允许自省的特性,所以测试该语言的套件能实现自动测试注册。在大多数情况下,将完全用C编写的项目编译和测试为C++是可能的。这通常是一个好的解决方案,但是对于不习惯这种语言的嵌入式开发人员来说可能会不太舒服。

  在硬件上运行

  有一篇文章,讨论了运行测试的最佳位置。它列出了三个不同的选项:通过模拟器的开发系统、本地工作站或系统硬件。通常,使用前两个选项中的一个是有意义的,但在某些情况下(或不同的测试),使用其他选项可能有意义。

  话虽如此,测试框架的选择将影响到是否可以执行这些操作。根据你平台可用的模拟器类型,可能很难使用依赖于在操作系统下运行的工具(如check))。这肯定不会对裸金属硬件本身起作用。另一方面,当测试失败可能导致分段错误时,具有在单独的地址空间中运行测试的功能是非常好的。

  框架选项

  Unity

  这个测试框架很轻,非常便于携带。开发人员声称,它可以移植到任何架构上,从高性能的x86机器到8位微控制器,包括具有神秘功能的架构,如奇怪的整数宽度。它专门针对嵌入式开发。

  它的缺点是缺乏高级功能,如地址空间隔离,或自动运行程序生成和测试集成。它与ThrowTheSwitch工具套件集成得很好,其中包括CMock、CException以及Ceedling。当一起使用时,Unity的简单性的许多缺点被减轻了。

  Check

  check是另一个相对轻量级的C单元测试框架。与Unity不同,相反,它专注于安全和简单易用。它出名的主要原因是它在一个隔离的地址空间中运行每个测试,这意味着可以捕获无效的内存访问。相比之下,使用Unity的测试会因为分段错误而彻底失败。

  它还有一些比Unity更方便的功能,包括参数化测试,可以方便地编写应该在一系列不同值上验证输出的例程。它在设计时没有考虑裸机嵌入式开发。

  check也有缺点。首先,很明显,是对操作系统的依赖,这意味着直接移植到嵌入式系统非常困难,并且在模拟器下交叉编译运行时可能会有问题。

  其次,生成子进程比简单的函数调用要昂贵得多,所以当check必须运行许多测试时,它往往会停滞不前。

  像任何其他纯C框架一样,测试运行程序必须手工编写。

  GoogleTest

  GoogleTest是Google的单元测试框架。它是用C++编写的,但是稍加调整就可以用来测试C应用程序。它支持使用Google Mock,这对于测试依赖于硬件的模块是必要的。

  GoogleTest确实支持在单独的地址空间中运行测试,但默认情况下并不这样做。这些测试被称为“死亡测试”,它们主要用于捕捉预期的故障,而不是对意外segfaults等的保护。

  这个测试框架的文件非常好,嵌入式开发人员值得一看。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
中国女排超级联赛11月16号第七轮赛程,CCTV5直播北京vs深圳中塞

中国女排超级联赛11月16号第七轮赛程,CCTV5直播北京vs深圳中塞

排球大视界
2024-11-16 15:58:30
巴拉圭赢阿根廷之后,世界杯南美预选赛更扑朔迷离了

巴拉圭赢阿根廷之后,世界杯南美预选赛更扑朔迷离了

百里无心
2024-11-16 09:26:56
以新防长说伊核设施很好打、暗示消除伊朗神权,啥时候和怎么打?

以新防长说伊核设施很好打、暗示消除伊朗神权,啥时候和怎么打?

邵旭峰域
2024-11-12 17:35:40
南美世预赛积分:阿根廷居首,乌拉圭哥伦比亚分列二三,巴西第四

南美世预赛积分:阿根廷居首,乌拉圭哥伦比亚分列二三,巴西第四

直播吧
2024-11-16 10:22:44
“烧伤妈妈”面部状况曝光,没有毁容,丈夫贴身照顾

“烧伤妈妈”面部状况曝光,没有毁容,丈夫贴身照顾

九方鱼论
2024-11-15 22:47:42
黄晓明公开为叶珂道歉!首映礼哽咽鞠躬扶不起,知情人曝叶珂状况

黄晓明公开为叶珂道歉!首映礼哽咽鞠躬扶不起,知情人曝叶珂状况

古希腊月璧
2024-11-16 16:50:54
男子明知同事系军人配偶,仍与其保持情人关系同居!被批捕

男子明知同事系军人配偶,仍与其保持情人关系同居!被批捕

南方都市报
2024-11-16 16:44:49
大争议!勇熊战22人犯规合计49次犯规 勇士33秒3T追梦被驱逐

大争议!勇熊战22人犯规合计49次犯规 勇士33秒3T追梦被驱逐

醉卧浮生
2024-11-16 14:02:46
41分!20篮板!16助攻!对不起,浓眉,他要抢MVP

41分!20篮板!16助攻!对不起,浓眉,他要抢MVP

世界体育圈
2024-11-16 08:19:37
最新战报!4-1变3-2,肖国栋送礼,优势缩水,小钢炮逆转进决赛?

最新战报!4-1变3-2,肖国栋送礼,优势缩水,小钢炮逆转进决赛?

刘姚尧的文字城堡
2024-11-16 05:13:37
被截胡了?歼35还没正式开张,苏57就已拿下首个出口大订单?

被截胡了?歼35还没正式开张,苏57就已拿下首个出口大订单?

麓谷隐士
2024-11-16 06:40:50
美媒:中国核航母要来了,反应堆原型已建成,但赶超美军需几十年

美媒:中国核航母要来了,反应堆原型已建成,但赶超美军需几十年

红岸卫士
2024-11-16 17:39:59
三分5中3勇士赛后晒出赢球海报 封面人物给到穆迪

三分5中3勇士赛后晒出赢球海报 封面人物给到穆迪

直播吧
2024-11-16 14:14:35
越来越多的人认为,奥巴马是导致美国衰落的根本原因!

越来越多的人认为,奥巴马是导致美国衰落的根本原因!

现代春秋
2024-11-14 20:05:45
刘晓庆的瓜愈演愈烈!小男友再爆猛料私密视频流出,他得寸进尺了

刘晓庆的瓜愈演愈烈!小男友再爆猛料私密视频流出,他得寸进尺了

辣条小剧场
2024-11-09 06:22:17
恭喜!火箭又一23岁新星崛起:轰17+6攻防一体,休城七子不好惹

恭喜!火箭又一23岁新星崛起:轰17+6攻防一体,休城七子不好惹

李喜林篮球绝杀
2024-11-16 18:03:14
网红冯提莫直播翻车?胸大身子小比例失调,被网友调侃整容过度

网红冯提莫直播翻车?胸大身子小比例失调,被网友调侃整容过度

南城无双
2024-11-06 15:30:02
有“性瘾”的女人一般有什么表现?

有“性瘾”的女人一般有什么表现?

番茄健康
2024-11-14 18:28:06
ATP年终总决赛:最弱四强阵容出炉 德约弃赛 阿卡出局 药王直指冠

ATP年终总决赛:最弱四强阵容出炉 德约弃赛 阿卡出局 药王直指冠

秋眼体育
2024-11-16 10:09:27
赵本山儿子赵大牛12万巴黎世家棉袄穿出30块地摊货感,网友:绝了

赵本山儿子赵大牛12万巴黎世家棉袄穿出30块地摊货感,网友:绝了

娱不咸
2024-10-31 20:20:02
2024-11-16 18:50:44
粤嵌教育培训
粤嵌教育培训
粤嵌教育,IT人才孵化中心!
1612文章数 64关注度
往期回顾 全部

科技要闻

杨植麟:每月有3600万用户在使用kimi

头条要闻

横店群演集体降薪:现在10小时135元 此前1天能赚3百

头条要闻

横店群演集体降薪:现在10小时135元 此前1天能赚3百

体育要闻

39岁C罗1战2神作:倒挂金钩+梅开二度

娱乐要闻

麦学后亮学也来了!李行亮人设崩塌

财经要闻

中铁七局致歉!对5人就地免职

汽车要闻

越野拉满 东风猛士917高地雄狮售69.9万元

态度原创

亲子
时尚
手机
教育
数码

亲子要闻

马上大降温了,给他整了一件很厚实的气绒棉服! 杨雪呀

女人过了四十岁穿衣要大气,这些日常穿搭好美,时尚优雅又有气质

手机要闻

第三方保护壳厂商预热“华为新朋友”手机壳:硕大相机模组开孔

教育要闻

重磅!26年10月建成,南山中学新校区来了

数码要闻

亚马逊为其Fire HD 8以上型号的平板电脑带来新的AI功能

无障碍浏览 进入关怀版