下载及编译

下载

1)googletest、googlemock,下载地址:https://github.com/google/googletest

2)stub:下载地址:https://github.com/coolxv/cpp-stub

编译

Windows编译

使用CMake编译。

1)选择googletest路径与输出路径

googletest安装及代码覆盖率统计_代码覆盖率


2)进行Configure,选择本机的VS版本,以及生成平台(win32/x64)

googletest安装及代码覆盖率统计_编译_02


点击Finish后,结果如图。

googletest安装及代码覆盖率统计_gtest_03


3)选择Generate,等待完成。

此处只生成了静态库。若想要生成动态库,则勾选BUILD_SHARED_LIBS,部分工程无法使用静态库。

4)使用VS工程编译

在输出目录中找到googletest-distribution.sln,打开后,进行编译。

5)编译后的库位于输出目录的lib目录下,区分Debug与Release。

Linux编译

  1. 创建构建目录

mkdir build

  1. 进入build目录,构建Makefile

cd build

build ../googletest

googletest安装及代码覆盖率统计_gtest_04


  1. 编译

make -j8

googletest安装及代码覆盖率统计_代码覆盖率_05


注意,如果编译有报错,需要指定使用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

googletest安装及代码覆盖率统计_编译_06


配置测试工程

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();

}

googletest安装及代码覆盖率统计_代码覆盖率_07


调试测试用例

测试用例支持调试,类似正常业务代码调试。


代码覆盖率

visual studio

1)安装插件:OpenCppCoverage

https://marketplace.visualstudio.com/items?itemName=OpenCppCoverage.OpenCppCoveragePlugin

2)启动覆盖率检查:工具-》Run OpenCppCoverage。注意,OpenCppCoverage Settings中需要配置测试工程。

googletest安装及代码覆盖率统计_代码覆盖率_08


googletest安装及代码覆盖率统计_编译_09










可以排除不需统计覆盖率的文件

googletest安装及代码覆盖率统计_代码覆盖率_10


3)代码覆盖率如下图:

googletest安装及代码覆盖率统计_代码覆盖率_11


点击对应文件,即可看到对应文件的测试用例覆盖情况。

绿色-测试用例已覆盖;

红色-测试用例未覆盖。

googletest安装及代码覆盖率统计_编译_12



gcc

使用lcov进行覆盖率报告生成

googletest安装及代码覆盖率统计_编译_13


googletest安装及代码覆盖率统计_gtest_14



Gtest使用

资料较多,不赘述。