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

时间:2013-12-04 14:54:50

标签: 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
)

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

1 个答案:

答案 0 :(得分:5)

您可以使用CTest(通常与CMake一起安装)来实现此目的。

首先,您需要{CMKLL.txt中的include 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) ,然后您只需要为每个测试可执行文件使用CTest module命令:

ctest -C Debug

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

ctest -C Debug -V

或获得更详细的输出:

{{1}}