C++ 使用文件差异进行单元测试

C++ Unit Test with Diff on Files

本文关键字:单元测试 文件 C++      更新时间:2023-10-16

有没有库可以让你在C++单元测试中比较文件?理想情况下,这将适用于提升单元测试。

我在想一个功能,大致如下:

CHECK_FILES_EQUAL('output.txt', 'reference.txt');

如果文件相等(可能显示它失败的行(,则测试失败。

谢谢

我假设你想要更智能的东西,只是检查文件是否逐字节相等。我会使用google-diff-match-patch,这是一个功能强大的库,可以(除其他功能外(计算两个文件之间的差异。C++实现以及其他语言一起可用。但是,您需要自己处理文件 IO。

您可以使用 ApprovalTests 创建将某些输出文件与某些批准的输出进行比较的测试。如果它们不同,它可以在比较工具(例如 kdiff(中显示它,您可以选择接受更改并更新批准的输出或拒绝测试。

行为良好的单元测试不应该在文件系统中写入任何东西。如果您使用的是 STL 流,则应使用抽象std::ostream,然后在测试提要时std::ostringstream来代替此抽象。

只需将整个文件读入字符串并进行比较即可。GTest 会注意到大字符串,并会打印正确的差异。

一些演示