用Cmake编译Gtest单元测试

Google 的Gtest能够用于C/C++代码的单元测试,经过修改gtest目录下的Makefile文件,将提供的sample文件替换为咱们本身的文件名就可以经过make生成可执行的测试文件。若是不想逐个查找替换文件名,能够编写CMakeList.txt文件,经过cmake进行编译生成可执行文件。ubuntu

 环境:ubuntu14.04,cmake 2.8.12.2, gtest-1.7.0wordpress

 

1)参考gtest目录下的cmake文档,进入到该目录下,执行函数

1 cd gtest-1.7.0
2 mkdir build
3 cmake -Dgtest_build_samples=ON ..
4 make

这时,能够看到在该build目录下会生成对应每一个sample测试的可执行文件,以及两个静态库libgtest.a和libgtest_main.a,libgtest.a包含了所有所须要include的文件,libgtest_main.a则是须要为测试用例提供main函数入口。单元测试

 

2)针对须要测试的单元编写CMakeList.txt测试

因为须要包含gtest目录下的文件,能够设置该目录为环境变量以下,后面能够直接引用GTEST_ROOT:ui

1 GTEST_ROOT="/home/yht/gtest-1.7.0"
2 export GTEST_ROOT

将1)中生成的静态库libgtest.a和libgtest_main.a,复制到GTEST_ROOT/mybuild(可任意选择存放位置和取名称),编写的CMakeList.txt文件以下:google

 1 cmake_minimum_required(VERSION 2.6)
 2 
 3 enable_testing()
 4 find_package (Threads)
 5 include_directories($ENV{GTEST_ROOT}/include)
 6 link_directories($ENV{GTEST_ROOT}/mybuild)
 7 link_directories(/usr/local/lib)
 8 add_executable(uuid_generator uuid_generator.cpp ./unittest/uuid_generator_unittest.cpp)
 9 target_link_libraries(uuid_generator gtest gtest_main) #注意这里
10 target_link_libraries(uuid_generator ${CMAKE_THREAD_LIBS_INIT})
11 add_test(NAME uuid_generator COMMAND uuid_generator)

目录结构为:
./
+--uuid_generator.h
+--uuid_generator.cpp
+---------unittest/
+--uuid_generator_unittest.cpp
+----------build/

 

3)在./build目录下执行cmake ..,make就会生成可执行文件uuid_generator,运行./uuid_generator执行测试用例spa

 

4)参考连接和可能遇到的问题code

https://lembra.wordpress.com/2011/10/17/building-google-test-framework-with-cmake/blog

http://stackoverflow.com/questions/8507723/how-to-start-working-with-gtest-and-cmake

http://stackoverflow.com/questions/5900447/simplest-example-of-using-google-c-testing-framework-with-cmake?rq=1

相关文章
相关标签/搜索