分享几个嵌入式软件单元测试框架.docx

上传人:p** 文档编号:1110996 上传时间:2024-07-25 格式:DOCX 页数:16 大小:41.24KB
下载 相关 举报
分享几个嵌入式软件单元测试框架.docx_第1页
第1页 / 共16页
分享几个嵌入式软件单元测试框架.docx_第2页
第2页 / 共16页
分享几个嵌入式软件单元测试框架.docx_第3页
第3页 / 共16页
分享几个嵌入式软件单元测试框架.docx_第4页
第4页 / 共16页
分享几个嵌入式软件单元测试框架.docx_第5页
第5页 / 共16页
分享几个嵌入式软件单元测试框架.docx_第6页
第6页 / 共16页
分享几个嵌入式软件单元测试框架.docx_第7页
第7页 / 共16页
分享几个嵌入式软件单元测试框架.docx_第8页
第8页 / 共16页
分享几个嵌入式软件单元测试框架.docx_第9页
第9页 / 共16页
分享几个嵌入式软件单元测试框架.docx_第10页
第10页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《分享几个嵌入式软件单元测试框架.docx》由会员分享,可在线阅读,更多相关《分享几个嵌入式软件单元测试框架.docx(16页珍藏版)》请在第壹文秘上搜索。

1、作为一名合格的嵌入式软件工程牌,不仅需要写业务代码,还需要n叭元测试代码,这个时候,有一我单元测试框架就显得尤为重要.软件开发中,每次需求的变更基本都需要改写代码,而代码变更后就需要进行功能测试.当然,在功能测试之前需要代码的单元测试,避免代码改动后部分场景没有验证,最后出现各种问题.通过测试框架快速完成代码的单元测试,不仅可以覆蔽之前测试的场景,也能快速反应问题在哪里.常用的C语言费试樨架有: Unity;,个小型的,开源的C语言测试机;架,提供了用于测试的基本结构和函数.简单好用,常用于嵌入式系统开发. CUnit;,个面向C语言侧试的框架,使用简单,支持自动化测试和手动测试. Check

2、:适用于C语言的单元测谎框架,使用简单,支持测试我件、测试用例的管理,便于维护测试组件. Goog1.eTest:Goog1c推出的C+测试框架,支持C语言,可以跨平台,具有丰富的斯言辉和Mocks. CBOCkai适用T-C语言的单元测试框架,支持内存泄漏检测,支持Hock函数和StUb函数等高级用法. criterion:基于C语言的单元测试框架,支持参数化测试和测试用例依赖,具有良好的性能和易用性.这里介绍Unity,其他的大家感兴趣可以自行查阅,不同的单元测试框架适用下不同的开发需求和场嵬。开发人员可以按照自己的项目要求选择最适合的框架.UnityW小可以只用到几个文件即可完成,把Un

3、ity源码目录下的Unity.c、Unity.h、Unity_internaIs.h三个文件复制至我们的工程目录下进行编译即可,然后在测试文件代码中包含简单的示例完成功能函数的验证:/这里可以放置每个测试用例运行前的初始化代!VOidtearDown()1/这里可以放置何个测试用例运行后的清理代四itAdd(ita,intb)returna+oidtestAddFun(voidEST_ASSERT_EQUA1._UINT(4,Add(1.,5);TEST_ASSERT_EQUA1._UINT(-6,Add(1.,-5);|UNITY_BEG1N();启动测试RUIvrEST(SSJAddFUn

4、);UNITY_END();结束测试returnC;通过串口或终端打印内容为:C:testtest.c:47:testAddFun:PASS33其中.un:ty_intcrna1s.h文件中可以修改输出终端,即.H:TY_O,1?U:_Ct-:AR宏的定义.*OutputMethod:stdout(DEFAU1.T/defineUNHYOUYPUT一CHAR(八)(Void)PUtChar(aI*ifdefinedassothinge1.se,makesurewedec1.oreitheresoeterfoicMNITUTPUTCHARHEADERDEC1.ARATION:endif其中,自定

5、义实现的C语言扩展库(Cot)的容卷功IB函数都已通过Unity添加了对应的单元窝试用例,倍接,https:/giteecom/const-zpc/cot旨在打造一个C语言的通用扩展库。1、介绍支持多种容器实现,包括通用队列(包括不定长队列)、栈、双向链表和动态数组功能双向健表W点可动态创建(需要在初始化分此内存)或静态添加动态数组在初始化分配的内存中最大限度地使用,支持随机访问(连续地址支持定义序列化/反序列化的结构体功能使用到fBoost库中的PP库功能宏谱法:确保两边都播要保持头文件结构体定义一致移植了部分C+B。St库中的PP库功能通过宏语法实现复杂的宏语言,灵活进行使用在编译的时候生

6、成自己期望的代码2、软件架构目录说明:I-COt1-inc1.ude1-container/容器实现头文件IIpreprocessor/移植BOOSt库中的PP头文件1.-seria1.izeIJrC/序列化/反序列化实现头文件1container/容器实现卸文件1.-Seria1.iZep-testH序列化/反序列化实现湖文件IHcontainerH容器实现测试代码1.-seria1.ize/序列化/反序列化测试代码1.-unity3、使用说明/单兀测试框架代码(I)容器类功能使用说明双向链表使用方式demo:intmain()cot1.ist-t1.ist;cot1.istItem-tno

7、deBuf10;cot1.istInitC&1.ist,nodeBuf,10);intdata1.三10intdata2-20;intdata3=30;头徐维加元素cot1.ist-PushFront(S1.ist1.&data1.);尾部增加元素cot1.ist_PushBack(A1.ist,adata2);/插入元素Cot1.isteInsertcot1.ist-End(1.ist)#&data3);/使用迭代器织历所有元素for_1.ist_each(item,1.ist)pritf(=%d1,*item-ptr(int,item);/移除指定元素COt1.ist.Remove(81i

8、st,&data3);/根据添加移除兀素Cot1.isteRemoveIf(A1.ist1.OnRemoveCondition);COt1.iSjt1.ist2;cot1.istItem_tode8f2(5;C0t1.ist-Init(S1.ist2,nodeBuf2,3);/旌衣内存交换cot1.ist_Swap(&1.ist1.,&1.ist2);return0;动态数组使用方式dem。:intmain()uint8tbuf2;cotVector-tvector;cotVector-Init(Svector,buf,sizeof(buf),sizeof(uint32t);/在尾部追加元素u

9、int32tdata-42;CotVectorePush(Svector1&data);data-56;cotVector_Push(&vector,&data);data-984;cotVector_Push(Svector1&data);/插入元素uint32-tarrdata2-125,656);cotVector-InsertN(Svectorj2,Sarrdata,2);/删除两个元素cotVector-RemoveN(Svector1.1,2);/根抠添加附除元素CotVectoreRemoveIf(&vector,OnvectorRemoveCondition);/打印数组中的数

10、据内容for(int1-;1sizeof(data);data=895;cotQueue_Push(&stack,&datasizeof(data);H访何元索int*pata=(intt)cotStack-Top(fistack);printf(,va1.Xd11m,*pata);H弹出顶部元索cotstack.Pop(Sstack);return0;(2)序列化/反序列化功能使用说明可以定义一个公共头文件:HifndefSTRUCTHtrdefineSTRUCTHIrinc1.udeseria1.ize/seria1.ize.hCOTeDEFINE_STRUCT_TYPE(test_t,(

11、UINT16_T)(Va1.I)(2)(NT32.T)(va1.2)(1)(UINT8,T)(va1.3)(D)(NT16.T)(va1.4)(1)(OOUB1.E-T)(va1.5)(D)(INT16-T)(va1.)(i)(STRING)(SzName)(i)(DOUB1.E)(va1.7)(1)(F1.OAT,T)(va1.8)(D)(STRING,!)(SzName1.)(100)Wendif/STRiKTji各个模块引用头文件使用:!(inc1.udestruct.h*intmain()(uint8-tbuf100;/序列化使用demoCOT_DEFINE_STRUCT_VARIAB1.E(test_t,test);test.va1.1.0-5;test.vai1.1=89;test.va1.2-9

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 嵌入式开发

copyright@ 2008-2023 1wenmi网站版权所有

经营许可证编号:宁ICP备2022001189号-1

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!