1

我正在使用 catch2 编写一些带有单元测试的代码(出于某种原因,它将保持这种状态)。

现在,在一组单元测试中,有很多(成对)行看起来像这样:

  T t1;
  t1 = foo(some, params, here);
  CHECK(my_compare(t1, T{some_literal}));

因此,my_out_param使用单个函数调用进行设置,然后将其与 T 文字进行比较。

现在,当它运行并失败时,我得到:

/path/to/test.cpp:493: Failure:
  CHECK(my_compare(t1, T{some_literal}));
with expansion:
  false

但显然我没有得到“一些,参数,这里”。嗯,我需要它。否则,如果不阅读源代码,我真的不知道哪个测试失败了。

由于这里依赖于宏,我不能只包装CHECK()一个函数并在里面做一些花哨的事情。

当检查失败时,您会建议我做什么以使“some, params, here”与“some_literal”一起打印,同时:

  1. 保持我的测试源代码简洁。
  2. 不重复自己
  3. 仍然获得有效的文件和行号

?

注意:当前使用的 catch2 版本是 2.7.0,合并为一个标头。如果版本更改会有所帮助,那可能是可行的。

4

0 回答 0