如何将文件与Boost.Test进行比较?

Mhh*_*ker 9 c++ boost unit-testing

我有两个文件需要比较.我会用这样的东西

BOOST_REQUIRE_EQUAL(filename1, filename2);
Run Code Online (Sandbox Code Playgroud)

Gri*_*nov 9

您可以使用BOOST_CHECK_EQUAL_COLLECTIONS来比较文件内容.

代码示例:

#define BOOST_TEST_MAIN
#include <boost/test/unit_test.hpp>

#include <fstream>
#include <iterator>

BOOST_AUTO_TEST_CASE( test )
{
    std::ifstream ifs1("data1.txt");
    std::ifstream ifs2("data2.txt");

    std::istream_iterator<char> b1(ifs1), e1;
    std::istream_iterator<char> b2(ifs2), e2;

    BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
}
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记设置noskipws flag => std :: noskipws(ifs1),以丢弃跳过二进制文件中的空格,否则迭代器将跳过任何空格并且\ t和\n将被跳过,但文件仍然不同. (4认同)
  • 谢谢,在阅读了ForEveR的回答之后,我几乎就这样做了.但是使用二进制模式打开文件std :: ifstream ifs1("data1.txt",std :: ios :: binary); (2认同)