4.6 预期测试失败

    理想情况下,我们希望所有的测试能在每个平台上通过。然而,也可能想要测试预期的失败或异常是否会在受控的设置中进行。这种情况下,我们将把预期的失败定义为成功。我们认为,这通常应该交给测试框架(例如:Catch2或Google Test)的任务,它应该检查预期的失败并向CMake报告成功。但是,在某些情况下,您可能希望将测试的非零返回代码定义为成功;换句话说,您可能想要颠倒成功和失败的定义。在本示例中,我们将演示这种情况。

    这个配置的测试用例是一个很小的Python脚本(),它总是返回1,CMake将其解释为失败:

    1. 这个示例中,不需要任何语言支持从CMake,但需要Python:

    使用set_tests_properties(example PROPERTIES WILL_FAIL true),将属性设置为true,这将转换成功与失败。但是,这个特性不应该用来临时修复损坏的测试。

    如果需要更大的灵活性,可以将测试属性和FAIL_REGULAR_EXPRESSION与组合使用。如果设置了这些参数,测试输出将根据参数给出的正则表达式列表进行检查,如果匹配了正则表达式,测试将通过或失败。可以在测试中设置其他属性,完整的属性列表可以参考:https://cmake.org/cmake/help/v3.5/manual/cmake-properties.7.html#properties-on-tests