c++ - 确定当前 SECTION 的名称

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

<分区>

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

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

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

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

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

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

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

最佳答案

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

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

关于c++ - 确定当前 SECTION 的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54548895/

相关文章:

c++ - Catch 测试框架问题:无法使用 Catch::Session()

c++ - C++中*&类型的函数参数是什么意思?

c++ - 在 C++ 中有效地管理数组二进制堆的句柄?

unit-testing - Dart:如何测试流是否在特定时间发出元素?

javascript - 使用 Jasmine 测试 Web 套接字

c++ - 如何检索或打印 "Catch"信息记录缓冲区?

c++ - 在 Visual C++ 2015 中使用 Catch2

c++ - 使用 set_union 和 set_intersection 时出错

c++ - to_string 不是 std 的成员,g++ (mingw)

node.js - 模拟静态方法 es6 类进行测试