【发布时间】:2013-04-16 00:04:32
【问题描述】:
我希望 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) 为ctest 调用指定--output-on-failure 标志:
$ ctest --output-on-failure
有没有办法编写一个 CMakeLists.txt 文件,这样 ctests 在正常的“make all test”调用中默认转储失败的测试输出,而无需在会话中全局导出环境变量或使用自定义目标,如make check(如here所述)?
我知道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中。
【问题讨论】:
标签: testing cmake environment-variables output ctest