下载及编译
下载
1)googletest、googlemock,下载地址:https://github.com/google/googletest
2)stub:下载地址:https://github.com/coolxv/cpp-stub
编译
Windows编译
使用CMake编译。
1)选择googletest路径与输出路径
2)进行Configure,选择本机的VS版本,以及生成平台(win32/x64)。
点击Finish后,结果如图。
3)选择Generate,等待完成。
此处只生成了静态库。若想要生成动态库,则勾选BUILD_SHARED_LIBS,部分工程无法使用静态库。
4)使用VS工程编译
在输出目录中找到googletest-distribution.sln,打开后,进行编译。
5)编译后的库位于输出目录的lib目录下,区分Debug与Release。
Linux编译
- 创建构建目录
mkdir build |
- 进入build目录,构建Makefile
cd build build ../googletest |
- 编译
make -j8 |
注意,如果编译有报错,需要指定使用C++11语法进行编译,修改googletest/CMakeLists.txt,在其中添加使用C++11语法的命令set (CMAKE_CXX_STANDARD 11),再重新进行操作。
编译完成后,生成的静态库文件位于build/lib中。
工程引入
建立测试工程
为测试单独建立工程,目录结构对应被测试源码。以下为windows工程示例。
Business1、Business2为两个业务工程,其可以为库工程或可执行程序工程。
针对每个业务工程,都应该建立各自的测试工程,并建立对应的测试文件。
注意:Test工程需要编译对应业务工程的源码。使用VS时,可以通过添加现有项将对应业务源代码文件加入工程;使用cmakelists时,可以添加源码路径。
Business1/Factory对应的测试文件为Business1/TestFactory.cpp
Business1/User对应的测试文件为Business1/TestUser.cpp
配置测试工程
1)包含头gtest文件路径
头文件在下载的googletest目录下的googlemock/include与googletest/include内。
2)包含stub头文件[可选]
通常只需要包含cpp-stub\src下文件。
2)链接库
若是自己写main函数,则使用gtest.lib与gmock.lib;--常用
若是使用框架提供的main函数,则使用gtest_main.lib与gmock_main.lib,其提供了入口点main。
3)其它配置
使用静态库时,VS工程需要修改“配置属性-》C++-》代码生成-》运行库”,根据Debug、Release分别配置为MTd与MT。
使用动态库时,根据Debug、Release分别配置为MDd与MD,另外需要添加预定义宏GTEST_LINKED_AS_SHARED_LIBRARY。
Linux工程需要添加-lpthread。
启动测试
如下修改测试工程main函数,至此gtest框架即完成,启动测试工程可执行程序后,即会自动执行测试用例,给出测试结果。
#include"gtest/gtest.h" int main(intargc, char** argv) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } |
调试测试用例
测试用例支持调试,类似正常业务代码调试。
代码覆盖率
visual studio
1)安装插件:OpenCppCoverage
https://marketplace.visualstudio.com/items?itemName=OpenCppCoverage.OpenCppCoveragePlugin
2)启动覆盖率检查:工具-》Run OpenCppCoverage。注意,OpenCppCoverage Settings中需要配置测试工程。
可以排除不需统计覆盖率的文件
3)代码覆盖率如下图:
点击对应文件,即可看到对应文件的测试用例覆盖情况。
绿色-测试用例已覆盖;
红色-测试用例未覆盖。
gcc
使用lcov进行覆盖率报告生成
Gtest使用
资料较多,不赘述。