确定当前SECTION的名称

时间:2019-02-06 07:54:59

标签: c++ unit-testing catch-unit-test

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

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

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

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

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

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

现在,uniqueName最多应该包含A.B.C之类的东西,但是如果在扩展测试后保持不变,那么唯一的东西也就足够了。

1 个答案:

答案 0 :(得分:1)

似乎您正在寻找一种可靠的“类似路径”的命名方案,以便可以保存先前捕获的图像以进行比较,这是一个好主意。但是您还讨论扩展测试-如果添加更多部分,是否可能需要重命名以前捕获的图像?

在幕后,Catch使用宏根据文件名和行号(docs)生成唯一的TEST_CASE或SECTION名称-这不稳定(也不意味着)-只是一种方法有一个独特的参考。 IIRC的测试名称和名称纯粹是为了方便人类。不幸的是,无法访问节的名称:source