如何运行gtest? 我对使用GTest(实际上是C++)很陌生。 我正在制作一个需要进行单元测试的应用程序(如果有必要的话,使用CLion IDE)

如何运行gtest? 我对使用GTest(实际上是C++)很陌生。 我正在制作一个需要进行单元测试的应用程序(如果有必要的话,使用CLion IDE),c++,googletest,C++,Googletest,我遵循的步骤是: 从下载gtest 在我的项目中将zip文件解压缩到一个新的lib目录中 修改CMakeLists.txt cmake_minimum_required(VERSION 3.13) project(my_project) set(CMAKE_CXX_STANDARD 14) add_subdirectory(lib/gtest) # I renamed googletest-master folder to gtest, so that should be fine. inc

我遵循的步骤是:

  • 从下载gtest
  • 在我的项目中将zip文件解压缩到一个新的
    lib
    目录中
  • 修改CMakeLists.txt

    cmake_minimum_required(VERSION 3.13)
    project(my_project)
    
    set(CMAKE_CXX_STANDARD 14)
    
    add_subdirectory(lib/gtest) # I renamed googletest-master folder to gtest, so that should be fine.
    include_directories(lib/gtest/googletest/include)
    include_directories(lib/gtest/googlemock/include)
    
    add_executable(my_project main.cpp blablabla1.h blablabla1.cpp blabla2.h blabla2.cpp etc...)
    
    target_link_libraries(my_project gtest gtest_main)
    
  • 创建了一个名为
    Tests
    的新目录,并在其中添加了一个cpp文件,其中包含以下代码:

    #包括“gtest/gtest.h”
    #包括“gmock/gmock.h”
    试验(试验,阴性){
    断言式(0,1);
    }
    
  • 我被困在这里了,我该怎么做这个测试?如果我将以下代码放入
    main
    函数中,那么每次程序正常运行时,测试都会启动。我想以某种方式将正常运行的程序与运行的单元测试分开

    #包括“gtest/gtest.h”
    #包括“gmock/gmock.h”
    int main(){
    测试::InitGoogleTest();
    返回运行所有测试();
    }
    

  • 测试源文件应该是一个独立的可执行文件,它有自己的主要功能

    您的主要源代码不应包含

        testing::InitGoogleTest();
        return RUN_ALL_TESTS();
    

    <>这是你想要的。

    我想你误解了C++中的单元测试方式。在C++中,只能运行整个可执行文件而不是部分。这就是为什么您的应用程序通常有一个可执行文件/库,而单元测试则有一个不同的可执行文件。@MikevanDyke同一个项目如何生成两个
    exe
    s(一个用于我的应用程序,一个用于单元测试)?您可以使用
    add\u executable
    向cmake文件添加多个可执行文件,就像在中一样。因此,您将有类似于
    add_可执行文件(testexe testmain.cpp fileA.cpp fileB.cpp testFileA.cpp testFileB.cpp)
    add_可执行文件(exe main.cpp fileA.cpp fileB.cpp)
    。请注意,您还需要两个不同的主文件,一个用于测试可执行文件,另一个用于您的应用程序。@MikevanDyke您始终可以作为可执行文件的一部分运行特定数量的UnitTest,对吗?我的意思是使用-gtest_filter=“UnitTestClassName.*”其中*也可以替换为1个特定的测试。@TsakiroglouFotis这是正确的