gpt4 book ai didi

unit-testing - Google Test 中的自定义 EXPECT_NEAR 宏

转载 作者:太空宇宙 更新时间:2023-11-03 20:56:00 24 4
gpt4 key购买 nike

范围:使用 Google Test 和 OpenCV。

我想测试我的 Vec3f 是否等于另一个 Vec3fVec3f 是 OpenCV 中一个维度为 3 且类型为 float 的向量。 == 运算符已定义,因此 EXPECT_EQ(Vec3f(), Vec3f()) 有效。

但是因为它们是 float ,所以我想使用 EXPECT_NEAR(float a, float b, float delta) 宏。我该怎么做才能像 EXPECT_NEAR(vec_a, vec_b, float delta) 那样使用它?

目前我正在遍历向量的每个元素并在那里执行 EXPECT_NEAR。

这可能是相关的:Convenient method in GoogleTest for a double comparison of not equal?

最佳答案

您可以使用 Pointwise()来自 Google Mock 的匹配器。将它与检查两个参数是否接近的自定义匹配器相结合:

#include <tr1/tuple>
#include <gmock/gmock.h>

using std::tr1::get;
using testing::Pointwise;

MATCHER_P(NearWithPrecision, precision, "") {
return abs(get<0>(arg) - get<1>(arg)) < precision;
}

TEST(FooTest, ArraysNear) {
EXPECT_THAT(result_array, Pointwise(NearWithPrecision(0.1), expected_array));
}

关于unit-testing - Google Test 中的自定义 EXPECT_NEAR 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7120742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com