依赖工具的安装
- 安装ruby
https://rubyinstaller.org/downloads/ - 安装msys2
到网站http://www.msys2.org/ 下载适合自己主机的安装包,点击安装,在msys2安装完成后使用其内置的pacman包管理器,安装gcc, make,将C:\msys64\usr\bin添加到环境变量中。
pacman -S gcc
pacman -S make
- 安装gcovr
pip install gcovr
安装测试工具
gem install ceedling
ceedling的使用
- 查询使用方法:
ceedling help
- 主要的使用方法:
Commands:
ceedling example PROJ_NAME [DEST] # 创建示例工程
ceedling examples # 列出所有的示例工程
ceedling help [TASK] # 描述所有帮助信息或指定的某项的信息
ceedling new PROJECT_NAME # 创建一个新的ceedling项目
ceedling version # 打印所有的ceedling gem和库的版本
测试示例工程
- 新建测试工程
ceedling example temp_sensor
- 修改配置
打开project.yml的line35,增加UNITY_NO_WEAK的定义。
效果如下:
:defines:
:common: &common_defines [UNITY_NO_WEAK]
- 工程测试
- 测试AdcConductor模块
ceedling test:AdcConductor
- 测试所有模块
ceedling test:all
系统将会显示测试结果:
新建测试工程
- 创建项目
ceedling new MyNewProject
-
修改测试工程配置
打开project.yml
-- 将:source下的目录路径修改为待测试代码的路径,请根据实际的代码进行路径的调整,这里是可以使用相对路径。
-- 增加“UNITY_NO_WEAK"的定义。
-- 打开gcov的支持,以生成覆盖度报告。 -
编写测试用例
编写测试用例程序,注意所有测试程序需要以test_开头,如test_ringbuf.c。示例代码如下:
#include "ringbuf.h"
#include "unity.h"
static unsigned char buf[10];
static tRingBuf testRingbuf;
/**
* \brief Set UP
*
*/
void setUp(void)
{
ringbuf_init(&testRingbuf, buf, 10, 1);
}
/**
* \brief tear Down
*
*/
void tearDown(void)
{
}
/**
* \brief test the ringbuf write -> read
*
*/
void test_write_read(void)
{
unsigned char w_data = 0x55;
unsigned char r_data = 0;
ringbuf_write_one(&testRingbuf, &w_data);
ringbuf_read_one(&testRingbuf, &r_data);
TEST_ASSERT_EQUAL_HEX16(0x55, r_data);
}
- 运行测试用例
ceedling test:all
测试结果如下:
- 生成覆盖度报告
ceedling gcov:all
测试结果如下:
ceedling utils:gcov
生成html格式的代码覆盖度报告,如下:
点击其中的程序名,可以查看具体的代码覆盖度分析。