vs2015 + Unity + OpenCppCoverage环境搭建(单元测试)
产品平台由stm32方案切换到arm9系列,底层隔离,应用层兼容。在keil下仿真,很多问题没有暴露出来,在linux下暴露无遗,而linux下调试相对来说复杂(例如空指针,在stm32上用keil调试,如果异常不明显,不会死机,linux下直接段错误),导致问题跟踪困难。故以项目为根基,采用vs2015调试源代码(非底层的应用部分),Unity框架编写单元测试用例,OpenCppCoverage可视化单元测试覆盖率。
-
vs2015 Update3版本。
-
必须是Update3以上版本(OpenCppCoverage支撑)。获取路径(转载):
如果有安装过其他低版本的vs,先使用visual-studio-uninstaller完全卸载,工具路径:
https://pan.baidu.com/s/1zAD6z5071C8Rm1kmjGy1pw
- windows xp不支持vs2015。
-
-
vs2015统一配置
工具 -> 文本编辑器-> C/C++ ->高级,配置如下:
-
Unity
相关工程已建立,使用时只允许调用unity.h里的宏,别的封装不允许调用。
-
OpenCppCoverage
在安装好vs2015后,工具->扩展和更新->联机->搜索OpenCppCoverage安装(网络接入)。
在编写好单元测试用例之后,可以运行OpenCppCoverage检查单元测试覆盖率。
-
运行单元测试项目:
单元测试运行如出现:
则需要修改文件编码格式,统一修改为UTF-8,一次不行,来回反复修改。
-
关于解决方案框架
- 源码app中,每一个文件夹对应一个单元测试项目,例如acsample—>test_acsample。
-
每一个单元测试项目框架,test目录用于构建单元测试测试用源码(src,test_src,test_mock,cfg…)
- src - 被测试的源码加载,原则上测试哪个部分,就加载哪个部分。如果调用无关文件,考虑文件耦合性,需解耦;
- test_mock - 测试打桩函数加载,用于模拟某些环境;
- test_src - 测试用例加载,src中有多少源码文件,相应的测试用例文件就有多少,文件名在源码文件名前加上test;
- 所有的测试用例之间应该解耦,故测试用例均在测试接口内部声明和定义;
- 频发错误LNK2019归集