Ctest-使用--test-command选项进行构建和测试

nir*_*wap 5 unit-testing cmake googletest ctest

我使用Ctest来运行一堆使用add_test注册的Google测试。当前,这些测试没有任何参数。但是,我想在运行ctest时为它们提供所有参数(所有参数都通用,特别是--gtest_output = xml)。

我听说使用--test-command选项可以做到这一点,但是,我看到我们需要将--test-command和--build-and-test一起使用。有这种用法的例子吗?

squ*_*les 3

ctestCTest文档中指定了参数的格式,如下所示:

ctest --build-and-test <path-to-source> <path-to-build>
      --build-generator <generator>
      [<options>...]
      [--build-options <opts>...]
      [--test-command <command> [<args>...]]
Run Code Online (Sandbox Code Playgroud)

因此,例如在 Visual Studio 上,您可以Test1从构建文件夹运行测试(用于..目录.二进制目录):

ctest --build-and-test .. . --build-generator "Visual Studio 16 2019" --test-command Test1 --gtest_output=xml
Run Code Online (Sandbox Code Playgroud)

从 CMake 3.17 开始,您现在可以在定义测试本身的 CMake 文件中指定传递给 CTest 的参数(以及各个测试的参数)。该CMAKE_CTEST_ARGUMENTS变量采用分号分隔的参数列表来传递给 CTest。因此,继续使用上面的示例,您可以执行以下操作:

set(CMAKE_CTEST_ARGUMENTS "--build-and-test;${CMAKE_SOURCE_DIR};${CMAKE_BINARY_DIR};--build-generator;${CMAKE_GENERATOR};--test-command;Test1;--gtest_output=xml")
Run Code Online (Sandbox Code Playgroud)