testing - 使用 CMake + make 只运行一个测试

标签 testing cmake

如果我的项目有一堆测试,我可以运行它们 - 在 cmakeing 和 makeing 构建之后,构建 - 使用 make test

但是如果我只想运行其中一个测试怎么办?也就是说,我在测试 CMakeFile.txt 中有一个 add_test() 的项目之一?

最佳答案

tl;dr - 这样做:

cd $YOUR_BUILD_DIRECTORY
ctest -R name_of_your_test

解释

以下是您可能会感到困惑的原因:

  1. 您尝试使用 make 执行此操作,因为 make test 会为您运行所有测试。这不适用于单个测试(尽管有一个解决方法 - 请参阅@danger89 的 answer)。 ctest是实现它的跨平台方式。

  2. 您开始使用 ctest,例如在你的主项目目录中,你可能会得到类似这样的东西:

     *********************************
     No test configuration file found!
     *********************************
     Usage
    
       ctest [options]
    

    这没有帮助。

  3. ... 所以你认为“好吧,也许 ctest 有一个 -C 开关,就像 CMake 和 GNU Make” - 事实上,它有一个-C 开关!但这并没有达到您的预期:

     [joeuser:/home/joeuser/src/myproj]$ ctest -C build
     Test project /home/joeuser/src/myproj
     No tests were found!!!
    

你实际需要做的:

  cd $YOUR_BUILD_DIRECTORY
  ctest -R name_of_your_test

(注意 -R 匹配一个正则表达式。)这应该有效。请注意,您可以列出要运行的测试,而不是通过将 -N 传递给 ctest 来实际运行它们。


* 感谢@RTsyvarev 为我指明了正确的方向
* 如果您的测试名称也是另一个测试名称的前缀,请使用 ctest -R '^name_of_your_test$' - 参数实际上是一个正则表达式。

关于testing - 使用 CMake + make 只运行一个测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54160415/

相关文章:

c++ - 使用 cmake 从 github 中包含外部头文件库

java - onLowMemory 事件测试

Django 测试客户端发布数据为空

mysql - 如何用MySQL编写golang集成测试

c++ - 如何在 biicode 中使用 Emscripten 工具链?

ruby-on-rails - Snow Leopard ruby​​gems mysql2 和 ruby​​ on Rails 的 MAMP 配置问题

CMake 部署所需的库

testing - 如何使用 Rhino Mocks 和 MSpec 测试抽象类的虚拟属性?

node.js - Node-sass 没有与 TestCafe Docker Image 中使用的 Node 版本绑定(bind)

visual-studio-2012 - 有没有办法一次性指定 CMakeList 中的所有 GDCM 库?