欢迎来到第壹文秘! | 帮助中心 分享价值,成长自我!
第壹文秘
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 第壹文秘 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:1110996       资源大小:41.24KB        全文页数:16页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    作为一名合格的嵌入式软件工程牌,不仅需要写业务代码,还需要n叭元测试代码,这个时候,有一我单元测试框架就显得尤为重要.软件开发中,每次需求的变更基本都需要改写代码,而代码变更后就需要进行功能测试.当然,在功能测试之前需要代码的单元测试,避免代码改动后部分场景没有验证,最后出现各种问题.通过测试框架快速完成代码的单元测试,不仅可以覆蔽之前测试的场景,也能快速反应问题在哪里.常用的C语言费试樨架有: Unity;,个小型的,开源的C语言测试机;架,提供了用于测试的基本结构和函数.简单好用,常用于嵌入式系统开发. CUnit;,个面向C语言侧试的框架,使用简单,支持自动化测试和手动测试. Check:适用于C语言的单元测谎框架,使用简单,支持测试我件、测试用例的管理,便于维护测试组件. Goog1.eTest:Goog1c推出的C+测试框架,支持C语言,可以跨平台,具有丰富的斯言辉和Mocks. CBOCkai适用T-C语言的单元测试框架,支持内存泄漏检测,支持Hock函数和StUb函数等高级用法. criterion:基于C语言的单元测试框架,支持参数化测试和测试用例依赖,具有良好的性能和易用性.这里介绍Unity,其他的大家感兴趣可以自行查阅,不同的单元测试框架适用下不同的开发需求和场嵬。开发人员可以按照自己的项目要求选择最适合的框架.UnityW小可以只用到几个文件即可完成,把Unity源码目录下的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);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.oreitheresoe×terfoicMNITUTPUTCHARHEADERDEC1.ARATION:endif其中,自定义实现的C语言扩展库(Cot)的容卷功IB函数都已通过Unity添加了对应的单元窝试用例,倍接,https:/giteecom/const-zpc/cot旨在打造一个C语言的通用扩展库。1、介绍支持多种容器实现,包括通用队列(包括不定长队列)、栈、双向链表和动态数组功能双向健表W点可动态创建(需要在初始化分此内存)或静态添加动态数组在初始化分配的内存中最大限度地使用,支持随机访问(连续地址支持定义序列化/反序列化的结构体功能使用到fBoost库中的PP库功能宏谱法:确保两边都播要保持头文件结构体定义一致移植了部分C+B。St库中的PP库功能通过宏语法实现复杂的宏语言,灵活进行使用在编译的时候生成自己期望的代码2、软件架构目录说明:I-COt1-inc1.ude1-container/容器实现头文件IIpreprocessor/移植BOOSt库中的PP头文件1.-seria1.izeIJrC/序列化/反序列化实现头文件1"container/容器实现卸文件1.-Seria1.iZep-testH序列化/反序列化实现湖文件IHcontainerH容器实现测试代码1.-seria1.ize/序列化/反序列化测试代码1.-unity3、使用说明/单兀测试框架代码(I)容器类功能使用说明双向链表使用方式demo:intmain()cot1.ist-t1.ist;cot1.istItem-tnodeBuf10;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("=%d'1,*item-ptr(int,item);/移除指定元素COt1.ist.Remove(81ist,&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);/在尾部追加元素uint32tdata-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);/打印数组中的数据内容for(int1-;1<cotVector-Size(Svector);i*÷)printf("%2x,cotVector_Data(Svector)i);return0;双向队列(定长FIFO)使用方式demo:intmain()uint8tbuf1.;CotQUeUJtqueue;cotQueue_Init(&queue,buf,sizeof(buf),sizeof(it);/在尾部追加元案intdata三42;cotQueue-Push(Squeue,&data,sizeof(data);data=895;cotQueue_Push(&queue,&data,sizcof(data);/访问元素int*pata三(intt)cotQueue-Frot(Aqueue);printf(,va1.-%dm,*pData);/弹出首个元素cotQueuePop(&queue);return0;队列(不定长FIFO)使用方式demo:intmain()uint8-tbuf1.;COtIndQueuemtqueue;COtIndQueueInit(Squeue,buf,sizeof(buf);/在尾部追加元素chardata-42;cotIndQueue_Push(&queue,fidata,sizeof(data);intdata1.-8;cotIndQueue_Push(&queue,fidatasizeof(data1.);1.ongdata24;cotIndQeue-Push(Aqueue,fidatasizeof(data2);/访问元素SiZJt1.ength;int*pata三(int)cotIndQueueFront(Squeue,&1.ength);pritf(',va1.=Xdnw,fpData,1.ength);/冲出百个元素cotIndQeue-Pop(Squeue);return0;胞向栈使用方式demo:intmain()uint8-tbuf(1.;cotstack-tstack;CotStackeInit(&stack,buf,sizeof(buf),sizeof(int);/在顶部追加元素intdata=42;cotStack-Push(Sstack,&data>sizeof(data);data=895;cotQueue_Push(&stack,&data>sizeof(data);H访何元索int*pata=(intt)cotStack-Top(fistack);printf(,va1.Xd11m,*pata);H弹出顶部元索cotstack.Pop(Sstack);return0;(2)序列化/反序列化功能使用说明可以定义一个公共头文件:HifndefSTRUCTHtrdefineSTRUCTHIrinc1.ude"seria1.ize/seria1.ize.h"COTeDEFINE_STRUCT_TYPE(test_t,(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.ude"struct.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

    注意事项

    本文(分享几个嵌入式软件单元测试框架.docx)为本站会员(p**)主动上传,第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第壹文秘(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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

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

    收起
    展开