使用CMake,我如何从CTest中获取详细输出?

163

我正在使用CMake构建我的项目。我已经添加了一个使用Boost单元测试框架的单元测试二进制文件。这个二进制文件包含所有的单元测试。我已经将该二进制文件添加到CTest中运行:

ADD_EXECUTABLE( tftest test-main.cpp )
ENABLE_TESTING()
ADD_TEST( UnitTests tftest)

但是在 Visual Studio 中构建输出仅显示运行 CTest 的结果:

      Start 1: UnitTests
  1/1 Test #1: UnitTests ................***Failed    0.05 sec

  0% tests passed, 1 tests failed out of 1

这并不是很有帮助,因为我无法看到哪个测试失败了。如果我从命令行手动运行--verbose ctest,我将得到一个来自Boost单元测试的输出,告诉我实际上失败了什么:

1: Test command: tftest.exe
1: Test timeout computed to be: 9.99988e+006
1: Running 4 test cases...
1: test-main.cpp(20): error in "sanity_check3": check 1 == 2 failed
1:
1: *** 1 failure detected in test suite "Master Test Suite"
1/1 Test #1: UnitTests ................***Failed    0.00 sec

那么,我需要在CMakeLists.txt中做哪些更改才能使CTest始终以--verbose运行?是否有更好的方法来使用CMake / CTest进行Boost单元测试?


1
这个回答解决了你的问题吗?在CMakeLists.txt文件中,将"ctest"命令永久替换为"ctest --output-on-failure",适用于特定项目。参考链接 - Erunehtar
12个回答

6

对于使用Visual Studio的人,这里有一个主题的另一种变化(黑客):

cmake -E env CTEST_OUTPUT_ON_FAILURE=1 cmake --build . --target RUN_TESTS

-1

要使用XML文件显示结果,您需要使用以下命令执行测试

~$ ctest -T Test

我们在Testing/1234123432/test.xml中找到了结果,Testing文件夹中还生成了其他文件。


使用-T选项可以在XML中提供一些摘要信息,但它仅包括顶级测试,而不是单个测试用例。是否有办法也显示这些测试用例? - Avrdan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接