范围:使用Google Test和OpenCV。
我想测试一下我的Vec3f
是否等于另一个Vec3f
。Vec3f
是OpenCV中的一个3维向量,类型为float。定义了==-运算符,所以EXPECT_EQ(Vec3f(), Vec3f())
可以工作。
但是因为它们是浮点数,我想使用EXPECT_NEAR(float a, float b, float delta)
宏。我怎么做才能像EXPECT_NEAR(vec_a, vec_b, float delta)
一样使用它?
现在我正在遍历vector的每个元素,并在那里执行EXPECT_NEAR。
这可能与Convenient method in GoogleTest for a double comparison of not equal?有关
2条答案
按热度按时间aelbi1ox1#
您可以使用Google Mock中的Pointwise()匹配器。将其与检查两个参数是否接近的自定义匹配器结合使用:
ioekq8ef2#
你做的基本上是正确的。但是,我会使用一个自定义Assert函数,如:
然后MAGIC将包含您的代码,例如比较两个向量是否具有相同的大小,然后迭代所有元素并相互检查相同索引处的元素是否相差不超过delta。请注意,代码假设为Vec3f提供了<<运算符。
然后使用该函数:
如果expect失败,输出可能是: