确定当前 SECTION 的名称

Determine name of current SECTION

我们使用 Catch 作为测试框架,对其可用性非常满意。

我计划为新的图表小部件实施一系列简单的单元测试。图表小部件只能通过简单的图像比较才能正确测试。

为此,我需要将小部件的当前图像与以前存档的参考图像进行比较。现在,我需要为每个测试部分创建一个文件名,这非常麻烦并且应该自动完成。

是否可以将 TEST_CASE 中的当前 SECTION 导出为字符串?

以下示例说明了我想要实现的目标:

TEST_CASE("A") {
   SECTION("B") {
      SECTION("C") {
         std::string uniqueName=currentSection();
      }
   }
}

现在,uniqueName 最多应该包含类似 A.B.C 的内容,但如果它在扩展测试后保持不变,那么独特的内容也足够了。

看来您正在寻找一种可靠的 'path-like' 命名方案,以便您可以保存以前拍摄的图像进行比较,这是个好主意。但是您还谈到了扩展测试-如果您添加更多部分,以前捕获的图像是否需要重命名?

在幕后,Catch 使用宏根据文件名和行号生成唯一的 TEST_CASE 或 SECTION 名称 (docs) - this is not stable (nor meant to be) - it's just a way to have a unique reference. IIRC the test and section names are purely for human convenience. And there's unfortunately no way to access the name of the section: source