我有几个包含不同类测试的.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文件显然比执行所有这些文件都要高。但是,我时不时地想要运行所有测试。如何在我的设置中轻松实现这一目标?
答案 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}}