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

标签 c++ cmake googletest

我有几个包含不同类测试的 .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/

相关文章:

c++ - Cython PXD 似乎没有用于 PYX 文件

c++ - 使用默认参数的宏包装函数调用

opencv - 在 cmakelists.txt android 中添加 opencv

eclipse - CMAKE 单独的链接器和编译器标志

visual-studio-2010 - 由于其他依赖库,在 VS2010 中链接 googleTest 结果为 LNK2005

c++ - 终止正在运行的 boost 线程

C++:模式:哪种模式适合特定的代码执行取决于命令行参数

c++ - 检测 X11 与 Wayland 的有效方法,最好使用 CMake

c++ - VSCode 中的 Google 测试设置帮助

c++ - 在 C++ 类的构造函数中抛出异常是好习惯吗?