cmocka
cmocka介绍
cmocka 是一个优雅的C语言单元测试框架,它支持对象的mock。只依赖于标准C库。
可以支持不同的计算机平台和不同的编译器。
学习任务
- 在PC上实现样例测试
- 在Cortex-M系列MCU中运行
这两个任务主要有两个学习目标
- 熟悉cmocka中cmake的配置与编写(阅读/理解cmake源码)
- 熟悉如何使用cmocka编写PC端的模拟测试和MCU实际平台测试(重点)
实践(1)
接下来在Windows 10 的环境下编译和初步测试cmocka。这里需要提前做的准备有:
- 安装visual studio 2019,可以选择社区版
- 安装LLVM(clang)的windows版本,LLVM会依赖于visual studio
- 安装cmake
- 安装ninja
下载并解压最新版cmocka的源码包
解压后的目录如下:
在该目录下新建一个build目录,并在build目录下打开命令行。
使用下面几条命令分别测试cmake、clang、ninja是否成功安装
cmake --version
如果可以正常输出版本号,表示cmake安装成功。截图如下:
clang --version
ninja --version
如果上面上个软件都正常安装,接下来可以编译cmocka库和它的一些测试程序了。
首先使用
cmake -G"Ninja" ..\
生成ninja的构建文件,命令执行情况如下(部分截图):
接下来使用命令
ninja -j8
来编译cmocka的库和测试的可执行文件,执行结果截图如下:
其中比较多的警告,这里先不管。
然后使用下面的命令来将cmocka生成的库文件安装到指定的目录(这里先不解释具体安装到了那个目录)
ninja install
然后执行测试程序
ninja test
这样在PC上的一些编译工作就做完了。
这个过程还是比较简单的。但是过程中我还存在一些疑惑,在接下来的学习中需要解决。疑惑有:
疑惑(接下来需要学习的内容)
- cmake生成了一个 config.h 文件,生成这个文件的cmake文件是如何编写的?如果更换到其它编译器这个文件会配置成什么样子?
- 如何将编译器设置为交叉编译器?如MDK的armcc、armclang或者GNU的arm-none-eabi-gcc
- 如何编写测试程序?测试程序如何加入到测试,然后执行
ninja test
就自动回执行响应的测试代码? -
ninja install
是否可以由于打包发布程序?如何修改cmake文件实现?