【单元测试】ceedling 单元测试环境搭建

概述:

最新在学习使用ceedling做单元测试的测试方法,现将最近的收获整理分享,本文为ceedling的离线环境搭建教程详解。

安装流程:

单元测试入门使用手册

1    测试环境简介
我们所做的单元测试工作是在Windows环境下进行,而非局限于嵌入式环境,在这里,我们应用的自动化测试工具是Ceedling。Ceedling是一个用ruby语言编写的C语言自动化测试框架,它集成了Cmock、Unity和Cexception等多个开源项目。
2    搭建测试环境
搭建单元测试环境需要安装Ruby解释器、ceedling软件和GCC编译器,在搭建过程中需要按照顺序依次安装,并且保证安装包无中文路径。
2.1 安装Ruby解释器
首先以管理员身份运行“rubyinstaller-devkit-2.5.3-1-x64”安装包,按照默认选项进行安装即可。在安装完成之后会出现如下图所示弹框:
 【单元测试】ceedling 单元测试环境搭建_第1张图片
在弹框内输入“3”并单击“回车键”,等待“MINGW”组件安装,完成后会出现如下所示界面:
 【单元测试】ceedling 单元测试环境搭建_第2张图片
在出现上面界面后关闭当前命令窗口。返回桌面,单击“shift键+右键” ,调出命令窗口,输入“ruby -v”来验证是否安装正确。如安装正确则会弹出如下窗口。
 【单元测试】ceedling 单元测试环境搭建_第3张图片
这样Ruby解释器就已经安装成功。
2.2 安装Ceedling
Ceedling是在ruby gem镜像源中的一个软件。
首先将catch压缩包解压到当前文件夹下,并在cache文件夹下单击“shift键+右键”,调出命令窗口输入“gem install –l ceedling-0.28.3.gem”,安装ceedling,弹出如下界面代表安装成功。
 【单元测试】ceedling 单元测试环境搭建_第4张图片
2.3 安装GCC
首先将mingw64压缩包解压到当前文件夹下,并将mingw64安装包拷贝到“C:\Program Files\”根目录下。
然后在计算机系统环境变量中添加“C:\Program Files\mingw64\bin”,添加完成后点击确定。
注意:环境变量不带引号,环境变量之间需用英文“;”隔开。
在添加完环境变量之后,返回桌面,单击“shift键+右键” ,调出命令窗口,输入“gcc -v”来验证是否安装正确。如果安装正确则会出现如下界面。
 【单元测试】ceedling 单元测试环境搭建_第5张图片
将“test_ceedling_example-master”压缩包解压缩到桌面,并在test_ceedling文件夹内调出命令窗口,输入“ceedling test:all”指令,得出结果如下图所示。
 【单元测试】ceedling 单元测试环境搭建_第6张图片
截止目前为止,单元测试环境已经搭建完成。
3    单元测试使用
3.1 创建测试项目
ceedling允许我们通过命令行创建新的项目,命令行写在“New Ceedling.bat”文件中,测试工程默认名为“test_newceedling”,可通过更改“New Ceedling.bat”文件更改工程名。最后将“New Ceedling.bat”文件拷贝到被测工程目录下,双击运行即可。
在被测工程创建好之后会出现以下内容的新目录:
 【单元测试】ceedling 单元测试环境搭建_第7张图片
除此之外,还需将“rakefile.rb”文件拷贝到该工程目录下,以上文件含义如下:
a)    src:被测文件的目录;我们的被测文件是待测工程,故删除该文件夹。
b)    test:我们编写的测试用例所处文件的目录;
c)    vendor:此文件夹是ceedling提供的文件和所有附带文件,其中包括CMock,Unity和其他的工具,我们无需对此目录进行更改;
d)    ceedling.cmd:ceedling的脚本文件,无需更改;
e)    project.yml:实际的项目文件,后面我们需要根据实际需求进行调整;
f)    rakefile.rb:运行测试的必要文件,无需更改;
3.2 验证新建项目
在此,我们以电压检测程序为例进行测试,待测程序存放于src文件夹中,如下图所示:
 【单元测试】ceedling 单元测试环境搭建_第8张图片
src文件夹与test_newceedling位于同一级别目录:
 【单元测试】ceedling 单元测试环境搭建_第9张图片
project.yml文件是测试构建系统的核心文件,它包含应用程序源文件的路径,由于我们的源文件不包含在ceedling默认情况下,我们需要对项目文件作出微小改动,打开project.yml并找到paths部分:
 【单元测试】ceedling 单元测试环境搭建_第10张图片
将source部分更改为:
 
点击文件保存。
在test_newceedling目录下调出命令窗口,并输入“rake test:all”语句,目前所创建的测试构建系统是空的,会出现如下所示界面:
 【单元测试】ceedling 单元测试环境搭建_第11张图片
3.3 测试独立模块
在这里,我们以../src/util/adc_handler.c中的函数为被测函数,编写测试文件(测试文件源文件存放位置为../test_newceedling/test/test_ adc _handler.c,在使用中,主要修改此文件)。下面为测试文件模板:
 【单元测试】ceedling 单元测试环境搭建_第12张图片
每当需要编写新测试时,都可以使用此模板,为便于识别,我们规定测试文件名及函数的命名规则:在原有文件或函数名前面加“test_”。在本测试中命名为“test_adc_handler.c”
模板中包含三个函数,其含义如下:
setUp():初始化函数,在每次测试之前被调用;
tearDown():在每次测试后调用;
test_first():测试实例函数,根据测试目的进行更改,名称也可更改,在例程中更名为“test_ctor_ok”;
首先,需要包含被测文件的头文件:
 
然后添加将运行测试的实例,以及构造函数返回的结果软件:
 
下一步添加setUp和teatDown函数内容:
 【单元测试】ceedling 单元测试环境搭建_第13张图片
接下来,编写测试用例内容:
 
TEST_ASSERT_EQUAL_INT() 函数是unity的官方库函数,根据实际测试需求可使用不同函数,具体位于\vendor\ceedling\vendor\unity\src\unity.h中。
随后将编写好的测试文件放到\test文件夹下,准备进行测试。最后在test_newceedling文件夹下调出命令框,进行测试,测试运行结果如下:
 【单元测试】ceedling 单元测试环境搭建_第14张图片
这说明已经测试成功。
每次可同时测试多个函数,每个函数对应一个测试用例,如有测试失败,命令框中会有提示,会显示出错误所处文件及行数。如下所示:
【单元测试】ceedling 单元测试环境搭建_第15张图片 
 

参考文章:

嵌入式自动化单元测试(2)-Ceedling

Unit-testing (embedded) C applications with Ceedling

 

资源下载链接:

https://download.csdn.net/download/qq_39668147/11266736

你可能感兴趣的:(单元测试)