基于ceedling的软件单元测试(windows)

依赖工具的安装

  1. 安装ruby
    https://rubyinstaller.org/downloads/
  2. 安装msys2
    到网站http://www.msys2.org/ 下载适合自己主机的安装包,点击安装,在msys2安装完成后使用其内置的pacman包管理器,安装gcc, make,将C:\msys64\usr\bin添加到环境变量中。

pacman -S gcc
pacman -S make

  1. 安装gcovr

pip install gcovr

安装测试工具

gem install ceedling

ceedling的使用

  1. 查询使用方法:

ceedling help

  1. 主要的使用方法:

Commands:
ceedling example PROJ_NAME [DEST] # 创建示例工程
ceedling examples # 列出所有的示例工程
ceedling help [TASK] # 描述所有帮助信息或指定的某项的信息
ceedling new PROJECT_NAME # 创建一个新的ceedling项目
ceedling version # 打印所有的ceedling gem和库的版本

测试示例工程

  1. 新建测试工程

ceedling example temp_sensor

  1. 修改配置
    打开project.yml的line35,增加UNITY_NO_WEAK的定义。
    效果如下:
:defines:
  :common: &common_defines [UNITY_NO_WEAK]
  1. 工程测试
  • 测试AdcConductor模块

ceedling test:AdcConductor

  • 测试所有模块

ceedling test:all

  系统将会显示测试结果:

  

新建测试工程

  1. 创建项目

ceedling new MyNewProject

  1. 修改测试工程配置
    打开project.yml
    -- 将:source下的目录路径修改为待测试代码的路径,请根据实际的代码进行路径的调整,这里是可以使用相对路径。
    -- 增加“UNITY_NO_WEAK"的定义。
    -- 打开gcov的支持,以生成覆盖度报告。

  2. 编写测试用例
    编写测试用例程序,注意所有测试程序需要以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);
}
  1. 运行测试用例

ceedling test:all

 测试结果如下:

  1. 生成覆盖度报告

ceedling gcov:all

 测试结果如下:

ceedling utils:gcov

生成html格式的代码覆盖度报告,如下:
点击其中的程序名,可以查看具体的代码覆盖度分析。

转载于:https://my.oschina.net/hechunc/blog/3029406

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值