使用CMake + make仅运行一项测试

时间:2019-01-12 14:16:38

标签: testing cmake

如果我的项目有很多测试,则可以在cmakemake进行构建并使用make test进行构建之后运行它们。

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

2 个答案:

答案 0 :(得分:1)

einpoklum并不完全正确。实际上,您可以根据需要使用make test。 CMake将生成一个Makefile,我发现它接受一个ARGS变量。

这意味着您可以通过-R(regex)参数运行特定的测试。使用make test时会如下所示:

make test ARGS="-R '^test_'"

这只会运行文件名中以test_开头的测试用例文件。

注意: -R只是一个示例,它将接受 all ,所有ctest命令也将接受的参数。

无论如何,上面的make测试示例将与运行完全相同:

ctest -R '^test_'

此致

梅洛伊

答案 1 :(得分:0)

两件事可能会使您感到困惑:

  1. 您正在尝试使用make进行此操作,因为make test为您运行了所有测试。这不适用于单个测试。使用ctest
  2. 如果您已开始使用ctest,例如在主项目目录中,您可能会得到类似以下内容的信息:

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

    这没有帮助。

  3. ...所以您认为“好吧,它可能具有-C开关,例如CMake和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向我指出正确的方向