CMake是一个跨平台的编译工具,可以用简单的语句来描述所有平台的编译过程,可以根据不同平台、不同的编译器,生成相应的MakeFile或者vcproj文件,为项目的跨平台开发提供了便捷。随着开发人员对CMake工具的应用,测试同学自然也要学习使用CMake工具辅助进行单元测试。最近接手一个新项目从零开始测试,就将使用CMake工具辅助gtest单元测试的基本步骤简单记录下来。
下载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文件夹下编写单元测试文件即可。
返回搜狐,查看更多
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。