GTest Floats less 或 close with absolute error

GTest Floats less or close with absolute error

googletest 的断言宏非常棒,因为它们在失败时提供了很好的消息。我正在寻找一个更复杂的浮动比较的好可能性: "Less than or close with given accuracy for the latter" 因此,根据 Advanced Guide on github 这至少是可能的,而无需给出浮动可能接近的最大绝对误差:

EXPECT_PRED_FORMAT2(::testing::FloatLE, val1, val2);

就在上面他们说 "close with given error" 是如何工作的:

EXPECT_NEAR(val1, val2, abs_error);

所以我认为组合也一定有效。查看源代码,EXPECT_NEAR 是如何扩展的,我看到有像

这样的高阶宏
EXPECT_PRED_FORMAT3

再次接受另一个值。但是,我无法让这个组合以直接的方式工作。

所以问题是:这是否可能以及如何实现?

当然可以做一个解决方法,编码比较并只比较一个布尔值。但是,这在失败的情况下缺少很好的 gtest 输出。

您可以使用 EXPECT_PRED3(pred, val1, val2, val3) 但您必须编写自己的 pred 函数,该函数需要 3 个参数和 returns truefalse.

如果您想要漂亮的消息,您应该编写自己的函数,该函数接受 3 个参数和 returns ::testing::AssertionResult,如 Google 测试文档中所述,Using a Function That Returns an AssertionResult .然后,您可以将该函数与 EXPECT_TRUE.

一起使用