如何将STL容器作为参数传递给BOOST_CHECK_EQUAL?

zr.*_*zr. 6 c++ boost unit-testing stl

例如,假设我们要测试这个类:

struct TestMe {
  vector<int> getSomething();
}
Run Code Online (Sandbox Code Playgroud)

测试功能由以下部分组成:

...
vector<int> Expected;
TestMe TM;
...
Result = TM.getSomething();
BOOST_CHECK_EQUAL(Result, Expected);
...
Run Code Online (Sandbox Code Playgroud)

STL向量提供了一个自由运算符==,但是它没有提供运算符<<,所以这段代码不能编译.我怎样才能让它发挥作用?我可以定义自己的运算符<<?它的实现是什么样的?对最通用的解决方案的额外信任:)

Phi*_*ipp 8

我认为你应该使用BOOST_CHECK_EQUAL_COLLECTIONS,这测试每个元素,并打印不匹配的位置:

BOOST_CHECK_EQUAL_COLLECTIONS(Result.begin(), Result.end(), Expected.begin(), Expected.end());
Run Code Online (Sandbox Code Playgroud)