用Cmake编译Gtest单元测试

发表于:2015-7-07 10:18

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:yh-totoro    来源:51Testing软件测试网采编

  Google 的Gtest可以用于C/C++代码的单元测试,通过修改gtest目录下的Makefile文件,将提供的sample文件替换为我们自己的文件名就能够通过make生成可执行的测试文件。如果不想逐个查找替换文件名,可以编写CMakeList.txt文件,通过cmake进行编译生成可执行文件。
  环境:ubuntu14.04,cmake 2.8.12.2, gtest-1.7.0
  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:
  1 GTEST_ROOT="/home/yht/gtest-1.7.0"
  2 export GTEST_ROOT
  将1)中生成的静态库libgtest.a和libgtest_main.a,复制到GTEST_ROOT/mybuild(可任意选择存放位置和取名称),编写的CMakeList.txt文件如下:
  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执行测试用例
  4)参考链接和可能遇到的问题
  https://lembra.wordpress.com/2011/10/17/building-google-test-framework-with-cmake/
  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
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号