【问题标题】:How to configure and setup google test framework in linux如何在 linux 中配置和设置谷歌测试框架
【发布时间】:2013-11-06 11:20:31
【问题描述】:

我是 g 测试的新手,这是我正在尝试做的事情(在控制台的 Linux 服务器上): 1) 在 C++ 中创建一个小项目(其中一个包含函数原型的头文件、一个包含函数的 cpp 文件和另一个包含 main 调用头文件中已定义的函数的 cpp 文件) 2)配置g test 编写单元测试,测试步骤1中创建的函数 3)创建另一个带有几个单元测试的小项目(不同的场景来测试步骤1中项目下创建的功能)

谁能告诉如何配置 g 测试和使用示例创建的项目?

提前致谢

【问题讨论】:

  • 他们的网站上有大量示例,还有一个Primer 可以帮助您入门。

标签: c++ linux googletest vs-unit-testing-framework


【解决方案1】:
  1. 首先,从 Subversion 存储库中获取最新版本的 GoogleTest(您需要安装 Subversion):

    cd ~
    
    svn checkout http://googletest.googlecode.com/svn/trunk/ googletest-read-only
    
  2. 然后,构建库(您需要安装cmake):

    mv googletest-read-only googletest
    
    mkdir googletest/lib
    
    cd googletest/lib
    
    cmake ..
    
    make
    
  3. 此时:

    • 已编译的库位于 ~/googletest/lib 目录中
    • 包含文件位于 ~/googletest/include 目录中

使用 googletest:

  1. 在文件中包含标题:

    #include "gtest/gtest.h"
    
  2. 导出库路径:

    export GOOGLETESTDIR=~/googletest
    
  3. 编译

    g++ ... -I$GOOGLETESTDIR/include -L$GOOGLETESTDIR/lib -lgtest -lpthread
    

【讨论】:

【解决方案2】:

请找教程
@http://www.yolinux.com/TUTORIALS/Cpp-GoogleTest.html

注意!!

makefile (test/src/Makefile) 中的一个更正。库路径顺序不正确!!

它会像:

CXX = g++
CXXFLAGS = -g -L/opt/gtest/lib -lgtest -lgtest_main -lpthread
INCS = -I./ -I../../src -I/opt/gtest/include
OBJS = ../../src/Addition.o Addition_Test.o ../../src/Multiply.o Multiply_Test.o

testAll: $(OBJS)
$(CXX) $(INCS) -o testAll Main_TestAll.cpp $(OBJS) $(CXXFLAGS)

.cpp.o: $(CXX) $(CXXFLAGS) -c $

干净: rm testAll *.o testAll.xml

【讨论】:

    【解决方案3】:

    经过一番小小的研究,我发现了:

    如果您的项目库包含以下文件:
    1) callMain.cpp 调用函数做一些操作
    2) reverse.cpp,其中包含反转数字的逻辑和
    3) header.h 包含函数原型的声明

    如果你有单元测试用例脚本如 unitTest1.cpp 和 unitTest2.cpp 需要通过 gtest 进行测试,那么可以通过以下方式实现:

    g++ -I<gtest include directory location> -L<gtest directory location> <gtest_main.cc location> reverse.cpp unitTest1.cpp unitTest2.cpp -lgtest -lpthread -o test_try   
    

    这会编译并生成像 test_try 这样的可执行文件,执行时会给出所需的结果。如果我在任何地方错了,请纠正我。快乐编码:)

    【讨论】:

      【解决方案4】:

      新答案

      今天我阅读了Google Test FAQ不建议安装 Google Test 的预编译副本(例如,安装到/usr/local)。您可以在常见问题解答中找到答案。

      所以,推荐this answerthis blog article

      旧答案

      关注the CMake document of FindGTest

      下面的代码对我有用。

      cmake_minimum_required(VERSION 2.8)
      
      ################################
      # Add gtest environment
      ################################
      enable_testing()
      find_package(GTest REQUIRED)
      # add gtest include directory: way 1
      include_directories(${GTest_INCLUDE_DIRS})
      # add gtest include directory: way 2
      #include_directories(${GTest_SOURCE_DIRS}/include ${GTest_SOURCE_DIR})
      
      ################################
      # Build tests
      ################################
      aux_source_directory(. DIR_SRCS)
      add_executable(fooTest ${DIR_SRCS})
      
      # parameter `gtest` should at the front of `pthread`
      target_link_libraries(fooTest gtest pthread)
      
      # Take all gtest cases as one Cmake test case
      add_test(AllFooTest fooTest)
      

      然后,你可以使用命令:

      1. cmake .,生成Makefile
      2. make,构建 gtest 例程
      3. ./fooTest,运行 gtest 例程
      4. make test,运行 cmake 测试,这是运行 gtest 的另一种方式

      【讨论】:

      • 链接已失效。
      猜你喜欢
      • 2019-12-19
      • 2011-06-14
      • 2014-06-17
      • 2020-06-26
      • 2018-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多