首页 > 解决方案 > gmock:测试两个浮点向量

问题描述

我正在尝试为向量编写测试。对于 STL 容器,我尝试过:

EXPECT_THAT(float_vec1, ElementsAreArray(float_vec2));

但是我需要插入一个边距。

有没有ElementsAreArray等价物FloatNear(a_float, max_abs_error)

标签: googletestgmock

解决方案


是的,我使用了Pointwise容器匹配器,你可以给它一个匹配器和一个预期的容器(任何 STL 容器并且与非动态分配的 c 样式数组兼容)。

EXPECT_THAT(float_vec1, Pointwise(matcher, float_vec2))

对于匹配器,您可以使用FloatEq()which 使用基于 ULP 的浮点比较。

EXPECT_THAT(float_vec1, Pointwise(FloatEq(), float_vec2))

但是,我发现使用FloatNear(float max_abs_error)它来定义我自己想要的浮点错误更容易。

float ferr = 1e-5;
EXPECT_THAT(float_vec1,
            Pointwise(FloatNear(ferr), float_vec2));

推荐阅读