C++ 使用文件差异进行单元测试
C++ Unit Test with Diff on Files
有没有库可以让你在C++单元测试中比较文件?理想情况下,这将适用于提升单元测试。
我在想一个功能,大致如下:
CHECK_FILES_EQUAL('output.txt', 'reference.txt');
如果文件相等(可能显示它失败的行(,则测试失败。
谢谢
我假设你想要更智能的东西,只是检查文件是否逐字节相等。我会使用google-diff-match-patch,这是一个功能强大的库,可以(除其他功能外(计算两个文件之间的差异。C++实现以及其他语言一起可用。但是,您需要自己处理文件 IO。
您可以使用 ApprovalTests 创建将某些输出文件与某些批准的输出进行比较的测试。如果它们不同,它可以在比较工具(例如 kdiff(中显示它,您可以选择接受更改并更新批准的输出或拒绝测试。
行为良好的单元测试不应该在文件系统中写入任何东西。如果您使用的是 STL 流,则应使用抽象std::ostream
,然后在测试提要时std::ostringstream
来代替此抽象。
只需将整个文件读入字符串并进行比较即可。GTest 会注意到大字符串,并会打印正确的差异。
一些演示
相关文章:
- C++ gmock - 我们如何在单元测试 cpp 文件中读取/获取 cpp 文件函数的参数值
- 谷歌测试可执行文件中的单元测试未被vstest选中
- 在单元测试项目中包括 .c 文件,并从多个 cpp 文件访问它而不会出现链接问题
- 对 OpenCV C++ 程序进行单元测试,该程序拍摄照片并将其保存到文件中
- 我想使用 CMake 生成和编译 Visual Studio projet,我需要从构建中排除单元测试文件。有没有办法做到这一点?
- 我的 Visual c++ 托管单元测试项目未读取输入文件
- GTEST单元测试目标配置文件路径
- C 中的Google单元测试:如何编写持久数据文件
- 对单元测试(googletest)和项目/文件夹/文件的混淆
- 使用 Netbeans 进行单元测试 - 取消缓冲.dll没有这样的文件或目录
- 一个文件中的多个OS单元测试 - 是否可能
- 使用单元测试 (cppunit) 中另一个文件中定义的结构时出错
- 在 Google 的C++测试框架中为多个单元测试创建一个二进制文件
- cmake - 单元测试++链接单元测试二进制文件失败
- 生成文件创建多个主电源作为单元测试C++
- 如何在使用单个测试项目时将所有QtTestLib单元测试的结果组合在一个文件中?
- 使用带有g++和gtest的scons制作单元测试二进制文件
- 如何为单元测试生成文件打开失败
- 代码块:单元测试文件需要文件的整个地址
- 在Makefiles中包含用于单元测试文件的gtest库: