例如,假设我们要测试这个类:
struct TestMe { vector<int> getSomething(); }
测试功能由以下部分组成:
... vector<int> Expected; TestMe TM; ... Result = TM.getSomething(); BOOST_CHECK_EQUAL(Result,Expected); ...
STL向量提供了一个自由运算符==,但它没有提供运算符<<,因此这段代码不能编译.
我怎样才能让它发挥作用?我可以定义自己的运算符<< ?它的实现是什么样的?对最通用的解决方案的额外信任:)
解决方法
我认为你应该使用BOOST_CHECK_EQUAL_COLLECTIONS,它测试每个元素并打印不匹配的位置:
BOOST_CHECK_EQUAL_COLLECTIONS(Result.begin(),Result.end(),Expected.begin(),Expected.end());