这是我的结构
MyApp
├── CMakeLists.txt
├── src
│ ├── CMakeLists.txt
│ ├── config
│ ├── controller
└── tests
├── CMakeLists.txt
├── config
│ ├── CMakeLists.txt
│ ├── configurationtest.cpp
│ └── main.cpp
├── controller
├── CMakeLists.txt
├── controllertest.cpp
└── main.cpp
当我想执行测试时,我必须选择ControllerTests并运行它。 ConfigurationTest也是一样的。
我想在测试的顶级CMakeLists.txt中添加一些内容,以便能够在子目录中运行所有测试。 这是我的顶级测试CMakeLists.txt
project(MyAppTests)
include_directories(${GTEST_INCLUDE_DIRS})
include_directories($ENV{GMOCK_DIR}/include)
add_subdirectory(config)
add_subdirectory(controller)
每个子目录都有一个main.cpp和add_executable
。在配置CMakeLists.txt中有一行:
add_test(NAME ConfigurationTests COMMAND ConfigurationTests)
答案 0 :(得分:1)
CMake应该已经自动生成了一个目标RUN_TESTS
,用于午餐项目中定义的所有测试。
如果不在此处,您可能忘记将BUILD_TESTING
选项设置为ON
:
只有在调用了enable_testing()命令时,CMake才会生成测试。当 BUILD_TESTING 选项为 ON 时, CTest模块会自动调用命令。
答案 1 :(得分:0)
使用ctest可执行文件确实比使用预定义的RUN_TESTS
目标更具灵活性。我使用以下调用 - 在我的二进制输出目录中执行 - 来运行我的所有测试:
ctest.exe -C Debug -j 16 --no-compress-output -T Test --timeout 600
我确实想要
Debug
配置16
个测试no-compress-output
,因为我更喜欢这种格式Test
CTestTestfile.cmake
软件并执行定义的测试
Testing\...\Test.xml
,例如Jenkins xUnit Plugin可以评估)600
秒后超时测试