如何运行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
lib
目录中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这是正确的