使用unity做C语言自动测试

更新时间:2024-01-24 03:31:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1、代码结构

proj为工程(相当于模块)

src为产品代码 demo.c为源文件,demo.h为头文件 test为测试代码,里面包含了unity的源码 编译:

在test下meke,将产品代码+测试代码+unity一起编译 编出两个.out可以直接运行(若一个group则只一个.out) 注:

demo_test_group1/2_Runner.c是自动生成的运行容器

实际工程中的代码结构可设计为: moudule --src --inc

--test 模块的测试代码,依赖模块代码和unity框架代码(即include这两个.h) unity 作为一个模块,另外编译

(可以当做交换驱动一样的东西,单独编译,然后提供.h即提供api给上层调用)

2、操作步骤

(1)将proj文件夹放到/root/TDD文件夹下

(2)将unity源码解压,复制到test/unity处

(3)使用自动生成脚本生成测试容器(Runner)

进入 /root/TDD/proj/test/运行命令(注:若无ruby则用apt-get install ruby安装) ruby unity/auto/generate_test_runner.rb demo_test_group1.c ruby unity/auto/generate_test_runner.rb demo_test_group2.c 会自动根据相应.c生成两个 *_Runner.c 文件

(4)编译&运行 编译: make即可

会编出两个.out 运行:

./demo_test_group1.out ./demo_test_group2.out

也可以将运行命令写入到makefile中,编译测试一步完成 如在最后加./$(TARGET1)

结果:

(注意,test报错的返回值会导致make报错,但其实编译是正确的)

其中通过的测试会显示PASS,没通过的会显示FAIL,忽略的会显示IGNORE

3、源码讲解 (1)模块源码

demo.c中就是产品代码中的函数

demo.h即头文件,extern其中的函数

(2)测试源码

头文件,即依赖产品代码以及unity

测试夹具和测试清除的代码,会在每个测试用例之前之后运行 可以为空,加打印后可以看到如下:

一个完整地测试用例,调用产品代码中的函数,并检查返回值(或其它传出参数)

会被ignore的测试用例

(3)自动生成的.c(测试容器)

其主要工作也就是将testgroup加到main( )中

每个RUN_TEST宏的定义如下:

(4)makefile

只编译一个group,最简单的makefiele如下

即源文件有

demo.c 产品代码文件 unity.c unity文件

demo_test_group1.c 测试代码

demo_test_group1_Runner.c 测试容器(含有main函数)

本文来源:https://www.bwwdw.com/article/w83o.html

Top