FIXTURES_CLEANUP

在 3.7 版本中新增。

指定一个 fixture 列表,对于列表中的 fixture,测试将被视为清理测试。这些 fixture 名称与测试用例名称不同,并且不需要与和它们关联的测试名称有任何相似之处。

Fixture 清理测试是具有所有常用测试功能的普通测试。为测试设置 FIXTURES_CLEANUP 属性有两个主要影响

  • CTest 将确保测试在所有其他测试之后执行,这些测试在其 FIXTURES_REQUIRED 属性中列出任何 fixture。

  • 如果 CTest 被要求仅运行测试的子集(例如,使用正则表达式或 --rerun-failed 选项),并且清理测试不在要运行的测试集中,则如果该集合中的任何测试需要 FIXTURES_CLEANUP 中列出的任何 fixture,它将自动添加。

一个清理测试可以在其 FIXTURES_CLEANUP 属性中列出多个 fixture。它将只为整个 CTest 运行执行一次,而不是为每个 fixture 执行一次。一个 fixture 也可以定义多个清理测试。如果一个 fixture 有多个清理测试,项目可以使用常用的 DEPENDS 测试属性来控制它们的顺序(如果需要)。

清理测试可以要求其他 fixture,但不能要求在其 FIXTURES_CLEANUP 属性中列出的任何 fixture。例如

# Ok: Dependent fixture is different to cleanup
set_tests_properties(cleanupFoo PROPERTIES
  FIXTURES_CLEANUP  Foo
  FIXTURES_REQUIRED Bar
)

# Error: cannot require same fixture as cleanup
set_tests_properties(cleanupFoo PROPERTIES
  FIXTURES_CLEANUP  Foo
  FIXTURES_REQUIRED Foo
)

即使该 fixture 的 setup 或常规测试失败或被跳过,清理测试也会执行。

有关如何使用测试 fixture 的更完整讨论,请参阅 FIXTURES_REQUIRED