如何写一个功能测试脚本的cmake下运行/ CTEST

问题描述:

在cmake的,在一个CMakeList.txt如何写一个功能测试脚本的cmake下运行/ CTEST

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

足矣下面的命令来创建可通过外壳命令ctest执行的测试。

不幸的是,cmake文档并没有提供什么构成有效的测试可执行文件(<test_command>)。通常,测试可执行文件是使用像google-test这样的框架生成的。这有点牵扯,但网络中有很好的例子展示了如何在cmake下的谷歌测试下进行测试。

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

  • 难道我的测试可执行文件生成输出?它写入标准输出或标准错误吗?
  • 我的测试可执行文件是否应返回某些值以指示成功或失败?
  • 或者在cmake文档中我可以找到答案?
+0

我在https://cmake.org/Bug/view.php?id=15798报告缺少文档。 –

+0

他们迅速回应,3.5文档将包含答案:https://cmake.org/gitweb?p = cmake.git; a =commitdiff; h = f19d6a2c。 –

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

+0

谢谢。那么使用'ctest -V'可以获得额外的输出呢?不是通过stdout或stderr生成的吗? –

+1

是的,测试的stdout和stderr都用'ctest -V'显示。但这仅限于人工监督或调试。 'ctest'本身会忽略测试的stdout和stderr。 –