CTest:如果 "precheck" 测试失败,如何跳过其他测试?
CTest: How to skip other tests if the "precheck" test fails?
我正在向我的项目添加测试,所有测试都有一些先决条件,因此我添加了一个 precheck 测试,所有其他测试都依赖于该测试。如果 precheck 失败,那么我希望其他测试立即停止。
add_test(
NAME precheck
COMMAND false
)
add_test(
NAME test-1
COMMAND true
)
add_test(
NAME test-2
COMMAND true
)
set_tests_properties(
test-1 test-2
PROPERTIES
DEPENDS precheck
)
但似乎 DEPENDS
属性 只影响测试顺序:
$ make test
Running tests...
Test project /root/ibvq/frkcrpg/b
Start 1: precheck
1/3 Test #1: precheck .........................***Failed 0.00 sec
Start 2: test-1
2/3 Test #2: test-1 ........................... Passed 0.00 sec
Start 3: test-2
3/3 Test #3: test-2 ........................... Passed 0.00 sec
67% tests passed, 1 tests failed out of 3
Total Test time (real) = 0.02 sec
The following tests FAILED:
1 - precheck (Failed)
Errors while running CTest
Makefile:83: recipe for target 'test' failed
make: *** [test] Error 8
那么如何让失败的 precheck 停止其他测试?
如果您使用的是CMake 3.7或更高版本,您可以使用test fixture相关属性。
对于早期版本的 CMake,通过设置 REQUIRED_FILES 属性.
让您的 precheck
测试在成功时创建一个您的其他测试所依赖的虚拟文件
我正在向我的项目添加测试,所有测试都有一些先决条件,因此我添加了一个 precheck 测试,所有其他测试都依赖于该测试。如果 precheck 失败,那么我希望其他测试立即停止。
add_test(
NAME precheck
COMMAND false
)
add_test(
NAME test-1
COMMAND true
)
add_test(
NAME test-2
COMMAND true
)
set_tests_properties(
test-1 test-2
PROPERTIES
DEPENDS precheck
)
但似乎 DEPENDS
属性 只影响测试顺序:
$ make test
Running tests...
Test project /root/ibvq/frkcrpg/b
Start 1: precheck
1/3 Test #1: precheck .........................***Failed 0.00 sec
Start 2: test-1
2/3 Test #2: test-1 ........................... Passed 0.00 sec
Start 3: test-2
3/3 Test #3: test-2 ........................... Passed 0.00 sec
67% tests passed, 1 tests failed out of 3
Total Test time (real) = 0.02 sec
The following tests FAILED:
1 - precheck (Failed)
Errors while running CTest
Makefile:83: recipe for target 'test' failed
make: *** [test] Error 8
那么如何让失败的 precheck 停止其他测试?
如果您使用的是CMake 3.7或更高版本,您可以使用test fixture相关属性。
对于早期版本的 CMake,通过设置 REQUIRED_FILES 属性.
让您的precheck
测试在成功时创建一个您的其他测试所依赖的虚拟文件