如何使用 google-test 检查向量中的内容?

问题描述 投票:0回答:2
std::vector<uint8_t> vector1(10);
std::vector<uint8_t> vector2(10);

std::fill(vector1.begin(), vector1.end(), 2);
std::fill(vector2.begin(), vector2.end(), 2);

EXPECT_EQ(vector1, vector2);

上面的 EXPECT_EQ() 是否检查了向量 1 和向量 2 中的内容是否相等?如果没有,我该如何检查 使用 googletest EXPECT_* 函数可以证明向量 1 和向量 2 中的内容相等吗?

googletest 的文档解释了如何测试 C 字符串和 C++ 字符串对象的内容,但没有解释如何检查 C++ 向量的内容。

c++ googletest
2个回答
7
投票

EXPECT_EQ
使用
operator ==
来比较对象,使用
operator ==
来比较
std::vector
(引自 cppreference):

检查

lhs
rhs
的内容是否相等,即它们具有相同数量的元素,并且
lhs
中的每个元素与
rhs
中相同位置的元素比较是否相等。

所以答案是,它会比较向量的内容。


0
投票

googletest 确实解释了如何在 matchers 部分比较容器(例如向量)。

匹配器

ContainerEq(container)
可能会做你想做的事。 所以类似于
EXPECT_THAT(firstVector, testing::ContainerEq(secondVector));
的东西可能会起作用。

© www.soinside.com 2019 - 2024. All rights reserved.