我正在使用 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”一起打印,同时:
- 保持我的测试源代码简洁。
- 不重复自己
- 仍然获得有效的文件和行号
?
注意:当前使用的 catch2 版本是 2.7.0,合并为一个标头。如果版本更改会有所帮助,那可能是可行的。