如何在C++中的google测试中匹配双向量的元素?

问题描述 投票:0回答:1

在 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
时出现精度相关问题?

c++ unit-testing precision googletest
1个回答
3
投票

Google模拟有许多用于双精度比较的浮点匹配器,包括

DoubleEq
DoubleNear
。您可以在数组匹配器中使用它们,如下所示:

ASSERT_THAT(vec, ElementsAre(DoubleEq(0.1), DoubleEq(0.2)));
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.