如何在 C++ 的 google 测试中匹配双向量的元素?
How to match the element of a double vector in google test in C++?
在 Google 测试框架中断言两个双打相等我们可以使用:
ASSERT_DOUBLE_EQ(val1, val2);
而不是
ASSERT_EQ(val1, val2);
为了避免精度问题。为了比较向量的元素,Google 模拟框架有一个很好的宏,叫做 ElementsAre
,这是一个例子:
std::vector<double> vec{0.1,0.2};
ASSERT_THAT(vec, ElementsAre(0.1, 0.2));
有没有办法使用类似于 ASSERT_DOUBLE_EQ
的匹配器来避免在使用 ASSERT_THAT
时出现与精度相关的问题?
Google mock有多个floating point matchers用于双精度比较,包括DoubleEq
和DoubleNear
。您可以像这样在数组匹配器中使用它们:
ASSERT_THAT(vec, ElementsAre(DoubleEq(0.1), DoubleEq(0.2)));
在 Google 测试框架中断言两个双打相等我们可以使用:
ASSERT_DOUBLE_EQ(val1, val2);
而不是
ASSERT_EQ(val1, val2);
为了避免精度问题。为了比较向量的元素,Google 模拟框架有一个很好的宏,叫做 ElementsAre
,这是一个例子:
std::vector<double> vec{0.1,0.2};
ASSERT_THAT(vec, ElementsAre(0.1, 0.2));
有没有办法使用类似于 ASSERT_DOUBLE_EQ
的匹配器来避免在使用 ASSERT_THAT
时出现与精度相关的问题?
Google mock有多个floating point matchers用于双精度比较,包括DoubleEq
和DoubleNear
。您可以像这样在数组匹配器中使用它们:
ASSERT_THAT(vec, ElementsAre(DoubleEq(0.1), DoubleEq(0.2)));