Unity 单元测试框架的移植与使用
在开始单元测试前需要调用UNITY_BEGIN(),用于开始记录单元测试内容,在结束单元测后需要调用UNITY_END,用于输出单元测试结果,当编写好单元测试单吗后,使用RUN_TEST执行,编写单元测试结果判断条件,使用TEST_ASSERT_断言来判断,一下是实际样例。
1.移植
1.1下载Unity代码
项目首页 - Unity:Simple Unit Testing for C - GitCode
以上的unity github的镜像地址
1.2添加文件到项目

1.3创建unity_config.h文件
该文件用于重定向输出,并且配置unity功能,如果通过unity_config.h文件配置,需要在unity_internals.h文件内部添加宏定义UNITY_INCLUDE_CONFIG_H,如下图

1.4创建重定向printf
在任意地方添加一下内容,其中的UNITY_USART,需要是实际输出的串口

1.5定义函数
在任意位置创建setUp 和 TearDown函数,这两函数用于单元测试框架的开始和结束的处理,如过未创建,无法编译通过,如下图

2.使用
2.1样例和基本函数介绍
在开始单元测试前需要调用UNITY_BEGIN(),用于开始记录单元测试内容,在结束单元测后需要调用UNITY_END,用于输出单元测试结果,当编写好单元测试单吗后,使用RUN_TEST执行,编写单元测试结果判断条件,使用TEST_ASSERT_断言来判断,一下是实际样例


以上内容AddFunction是用来需要单元测试的函数,AddFunctionTest是单元测试函数,TEST_ASSERT_EQUAL_INT32是断言测试宏定义,用于uint32类型的数据比较,当其中的内容不同时判断未错误,并且输出在报告上,UnityTest需要在main函数中调用,一下是错误的输出截图。


3.实战
我写了个stm32f4内部的flash读写函数,现在我使用单元测试样例对他进行测试,代码如下,在其中,我使用函数对内部的flash各个扇区进行读写,并且在写入后重新读取进行比较。



在此基础上,我又写了一个对整个flash进行测试的更全面样例,并且使用TEST_ASSERT_EQUAL_UINT32_MESSAGE断言输出了自定义错误,需要注意的是,无论是何种断言,在出发后都会结束执行,也就是说一个断言测试函数只会报一个错误。


更多推荐



所有评论(0)