FIXTURES_SETUP

3.7 版本中新增。

指定一个测试应该被视为设置测试的 fixtures 列表。这些 fixture 名称与测试用例名称不同,并且不需要与关联的测试名称有任何相似之处。

Fixture 设置测试是具有所有通常测试功能的普通测试。为测试设置 FIXTURES_SETUP 属性有两个主要效果

  • CTest 将确保该测试在任何在其 FIXTURES_REQUIRED 属性中列出 fixture 名称的测试之前执行。

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

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

设置测试可以需要其他 fixture,但不能需要列在其 FIXTURES_SETUP 属性中的任何 fixture。例如

# Ok: dependent fixture is different to setup
set_tests_properties(setupFoo PROPERTIES
  FIXTURES_SETUP    Foo
  FIXTURES_REQUIRED Bar
)

# Error: cannot require same fixture as setup
set_tests_properties(setupFoo PROPERTIES
  FIXTURES_SETUP    Foo
  FIXTURES_REQUIRED Foo
)

如果任何 fixture 的设置测试失败,则在其 FIXTURES_REQUIRED 属性中列出该 fixture 的任何测试将不会运行。但是,清理测试仍然会执行。

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