cmake-gtest单元测试

前言

CMake是一个跨平台的编译工具,可以用简单的语句来描述所有平台的编译过程,可以根据不同平台、不同的编译器,生成相应的MakeFile或者vcproj文件,为项目的跨平台开发提供了便捷。随着开发人员对CMake工具的应用,测试同学自然也要学习使用CMake工具辅助进行单元测试。最近接手一个新项目从零开始测试,就将使用CMake工具辅助gtest单元测试的基本步骤简单记录下来。

cmake

准备工作

下载gtest的安装包(带有cmake编译功能的版本)。

CMake使用

CMake的所有的语句都写在CMakeLists.txt的文件中。在CMakeLists.txt文件中可以用cmake命令对相关的变量值进行配置,配置完成后,应用cmake命令生成相应的makefile或者project文件。

1、建立测试子项目

将gtest解压后的文件夹放到开发代码文件夹的同级目录下;

在开发代码文件夹的同级目录下新建文件夹,命名test,存放单元测试文件;

找到该目录下的CMakeLists.txt文件,在文件中添加如下语句:

add_subdirectory("test")

add_subdirectory("gtest")

add_subdirectory:将gtest和test子项目添加到总项目的编译列表中。

如此,在项目编译时便会一起编译gtest和test子项目。

2、编写测试项目CMakeLists.txt文件

在test文件夹下新建txt文件,命名CMakeLists.txt;

下图展示一个基本功能的单元测试CMakeLists文件:

cmake_minimum_required(VERSION 3.1.0)

project(ProjectTest)

set(CMAKE_CXX_STANDARD 11)

set(CMAKE_CXX_STANDARD_REQUIRED ON)

message(STATUS "C++11 support has been enabled by default.")

FILE(GLOB_RECURSE TEST_SRC "${CMAKE_SOURCE_DIR}/test/*.cpp" "${CMAKE_SOURCE_DIR}/test/*.h") 

add_executable(${PROJECT_NAME} ${TEST_SRC})

target_link_libraries(${PROJECT_NAME} gtest ProjectSource)

cmake_minimum_required:定义项目要求的cmake最低版本;

project:给测试项目命名,编译成功之后便是测试项目的文件名,比如ProjectTest.sln;

set(CMAKE_CXX_STANDARD/CMAKE_CXX_STANDARD_REQUIRED):设置C++标准;

message(STATUS ):编译过程正常输出语句”C++ 11 support …”;

FILE(GLOB_RECURSE):将test文件夹以及子文件夹下所有的编码文件(*.h,*.cpp)组成一个列表,并存储在变量TEST_SRC中,后续便可以使用${TEST_SRC}代表这些文件;

add_executable:使用${TEST_SRC}存储的文件为项目构建一个可执行文件,一般默认文件名与项目名相同,比如ProjectTest.exe;

target_link_libraries:为项目文件链接其所需的库文件,比如gtest库,还有项目开发代码的库文件;

接下来在test文件夹下编写单元测试文件即可。



留言