c++ - CMake 和 CTest : automatically run test's dependencies

标签 c++ c testing cmake ctest

在我的 CMakeLists.txt 中我有这样的东西:

 set_property(TEST testX APPEND PROPERTY DEPENDS testY)
 set_property(TEST testX APPEND PROPERTY DEPENDS testZ)

我想要一些方法来自动运行 testX 及其所有依赖项。 像这样的东西:

ctest <options> testX

因此,CTest 将运行 textYtestZtestX。 有什么办法吗?

或者,如果现在不可能,有没有办法通过脚本从CMake构建目录中提取依赖信息?

最佳答案

在 CMake 3.7 中添加了对测试装置的支持,它们完全可以满足您的需求。您的特定场景将像这样实现:

set_property(TEST testX PROPERTY FIXTURES_REQUIRED Foo)
set_property(TEST testY PROPERTY FIXTURES_SETUP Foo)
set_property(TEST testZ PROPERTY FIXTURES_SETUP Foo)

然后你可以要求 ctest 只运行 testX,它会自动将 testYtestZ 添加到要执行的一组测试:

ctest -R testX

它还将确保 testX 仅在通过 testYtestZ 后运行。如果 testYtestZ 中的任何一个失败,将跳过 testX。新选项-FS-FC-FA 也被添加到CMake 3.9 中的ctest 中,允许自动添加fixture setup/cleanup 测试在 ctest 命令行进行控制。例如,要暂时跳过将 testY 添加到测试集但仍自动添加 testZ,可以这样做:

ctest -R testX -FS testY

灯具属性在 CMake docs 中进行了描述下面的文章更全面地介绍了 fixtures 特性:

https://crascit.com/2016/10/18/test-fixtures-with-cmake-ctest/

关于c++ - CMake 和 CTest : automatically run test's dependencies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30808963/

相关文章:

c++ - 按最后一个元素对 vector 排序

c - 为什么 printf ("%s",charstr) 每次 fread() 的打印量越来越多?

angularjs - 影响数据库的 Angular e2e 测试

node.js - 如何告诉 TestCafe 在 navigateTo 方法之后等待?

unit-testing - 调用一些 testActions 会使测试崩溃

c++ - 在 C++ 中使用 Shell 扩展在不使用上下文菜单的情况下实现拖放

c++ - 在 C++ 中使用 istringstream 进行字符串到双重转换的意外结果

c++ - 将 float 截断为前 N 个十进制数字

c - array 和 &array[0] 的区别

c++ - 奇怪的 GCC 优化错误