我希望 ctest 默认向我显示失败的测试输出。也就是说,我想运行:
$ make all test
并查看失败测试的任何输出,而无需cat Testing/Temporary/LastTest.log
.
似乎有两种方法可以做到这一点:
(1) 设置CTEST_OUTPUT_ON_FAILURE
环境变量:
$ CTEST_OUTPUT_ON_FAILURE=1 make all test
$ # or CTEST_OUTPUT_ON_FAILURE=1 ctest
(2) 指定调用的--output-on-failure
标志:ctest
$ ctest --output-on-failure
有没有办法编写 CMakeLists.txt 文件,以便 ctests 在正常的“全部测试”调用中默认转储失败的测试输出,而无需在会话中全局导出环境变量或使用自定义目标make check
(如所述在这里)?
我知道该SET_TESTS_PROPERTIES()
命令,但尝试如下:
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(testenv CXX)
ENABLE_TESTING()
ADD_EXECUTABLE(hello hello.cpp)
ADD_TEST(testhello hello)
# Following sets the environment variable for the shell in which the test
# progoram 'hello' is run, but not the shell in which ctest is run
SET_TESTS_PROPERTIES(testhello
PROPERTIES ENVIRONMENT "CTEST_OUTPUT_ON_FAILURE=1")
并且实验表明环境变量是在执行测试程序的shell中设置的,而不是在执行ctest的shell中设置的。