【问题标题】:CTest: How to skip other tests if the "precheck" test fails?CTest:如果“预检查”测试失败,如何跳过其他测试?
【发布时间】:2018-05-22 13:01:28
【问题描述】:

我正在向我的项目添加测试,并且所有测试都有一些先决条件,所以我添加了一个 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 ctest


    【解决方案1】:

    如果您使用的是 CMake 3.7 或更高版本,则可以使用test fixture 相关属性。

    对于早期版本的 CMake,通过设置 REQUIRED_FILES 属性,让您的 precheck 测试成功创建一个虚拟文件,您的其他测试依赖于该文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      • 1970-01-01
      相关资源
      最近更新 更多