【问题标题】:How to write a functional test script to run under cmake/ctest如何编写功能测试脚本以在 cmake/ctest 下运行
【发布时间】:2016-01-17 02:39:42
【问题描述】:

在cmake下,CMakeList.txt下面的命令

enable_testing()
add_test(<test_name> <test_command>) 

创建一个可以通过shell命令ctest执行的测试就足够了。

不幸的是,cmake 文档没有给出任何构成有效测试可执行文件的指示 (&lt;test_command&gt;)。通常,测试可执行文件是使用 google-test 之类的框架生成的。有点复杂,但是网上有很好的例子展示了如何在 cmake 下的 google-test 下进行测试。

现在我想将我对 cmake/ctest 的使用扩展到不需要编译的功能测试脚本,因此无法在 google-test 下运行。因此我的问题是:什么是有效的手写测试可执行文件,可通过add_test 直接激活:

  • 我的测试可执行文件会生成输出吗?它应该写入 stdout 还是 stderr?
  • 我的测试可执行文件是否应返回某些值来指示成功或失败?
  • 或者我可以在 cmake 文档的哪里找到答案?

【问题讨论】:

标签: cmake ctest


【解决方案1】:

如果测试通过,您的可执行文件应该返回零,否则返回非零。输出被忽略。 add_test 的文档没有提到这一点。

【讨论】:

  • 谢谢。那么使用ctest -V 可以获得的额外输出呢?不是通过stdout或者stderr生成的吗?
  • 是的,测试的stdout和stderr都显示为ctest -V。但这仅用于人工监督或调试。 ctest 本身会忽略测试的 stdout 和 stderr。