我一直试图在 Google C++ Testing Framework / gtest 中找到断言这相当于 BOOST_CHECK_EQUAL_COLLECTIONS在 Boost Test Library 中发现的断言.
但是;没有成功。所以我的问题有两个方面:
编辑(略微修改的答案):
#include <iostream>
template<typename LeftIter, typename RightIter>
::testing::AssertionResult CheckEqualCollections(LeftIter left_begin,
LeftIter left_end,
RightIter right_begin)
{
std::stringstream message;
std::size_t index(0);
bool equal(true);
for(;left_begin != left_end; left_begin++, right_begin++) {
if (*left_begin != *right_begin) {
equal = false;
message << "\n Mismatch in position " << index << ": " << *left_begin << " != " << *right_begin;
}
++index;
}
if (message.str().size()) {
message << "\n";
}
return equal ? ::testing::AssertionSuccess() :
::testing::AssertionFailure() << message.str();
}
最佳答案
正如 Alex 所指出的,gtest 有一个名为 Google Mock 的姊妹项目,它具有用于比较两个容器的出色工具:
EXPECT_THAT(actual, ContainerEq(expected));
// ElementsAre accepts up to ten parameters.
EXPECT_THAT(actual, ElementsAre(a, b, c));
EXPECT_THAT(actual, ElementsAreArray(array));
您可以在 Google Mock's wiki 找到更多信息.
关于c++ - Google 测试中的 BOOST_CHECK_EQUAL_COLLECTIONS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15448047/