gpt4 book ai didi

c++ - 如何使用 cmake 一次运行所有 gtest 文件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:24:56 25 4
gpt4 key购买 nike

我有几个包含不同类测试的 .cpp 文件,看起来像这样:

#include <gtest/gtest.h>

namespace {
//lots of tests
}

int main(int argc, char** argv)
{
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}

和一个如下所示的 CMakeLists.txt 文件:

add_subdirectory(/usr/src/gtest gtest)
include_directories(${GTEST_INCLUDE_DIR})

add_executable(TestA TestA.cpp)
target_link_libraries(TestA
gtest
)

add_executable(TestB TestB.cpp)
target_link_libraries(TestB
gtest
)

add_executable(TestC TestC.cpp)
target_link_libraries(TestC
gtest
)

我喜欢这个设置,因为它很方便只为我当前正在处理的组件运行测试。执行一个测试文件显然比执行所有测试文件要快得多。但是,我时不时地想运行所有测试。如何在我的设置中轻松实现这一目标?

最佳答案

您可以使用 CTest (它通常与 CMake 一起安装)来实现这一点。

首先,您需要包含 CTest module在你的 CMakeLists.txt 中,那么你只需要使用 add_test每个测试可执行文件的命令:

include(CTest)
add_subdirectory(/usr/src/gtest gtest)
include_directories(${GTEST_INCLUDE_DIR})

add_executable(TestA TestA.cpp)
target_link_libraries(TestA gtest)
add_test(NAME AllTestsInA COMMAND TestA)

add_executable(TestB TestB.cpp)
target_link_libraries(TestB gtest)
add_test(NAME AllTestsInB COMMAND TestB)

add_executable(TestC TestC.cpp)
target_link_libraries(TestC gtest)
add_test(NAME AllTestsInC COMMAND TestC)

现在,一旦构建了测试 exe,就可以从构建文件夹中执行 CTest 来运行所有测试。例如。运行调试测试:

ctest -C Debug

或获得更详细的输出:

ctest -C Debug -V

关于c++ - 如何使用 cmake 一次运行所有 gtest 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20378549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com