GTest浮动较少或接近绝对错误

时间:2016-09-01 16:04:54

标签: c++ unit-testing floating-point googletest

googletest的断言宏非常棒,因为它们在发生故障时提供了很好的消息。我正在寻找一个更复杂的浮点比较的可能性: "小于或接近后者的准确度" 因此,根据Advanced Guide on github,这至少是可能的,而不会给浮点数的接近程度提供最大绝对误差:

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

就在他们正上方,他们会说出如何在给定错误的情况下关闭"工作原理:

EXPECT_NEAR(val1, val2, abs_error);

所以我认为组合也必须有效。查看源代码,EXPECT_NEAR如何扩展我看到有更高阶的宏,如

EXPECT_PRED_FORMAT3

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

所以问题是:这有可能吗?如何?

当然,人们可以做一个解决方法,编码比较并只比较一个布尔值。但是,如果发生故障,这就缺少了很好的gtest输出。

1 个答案:

答案 0 :(得分:1)

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

如果你想要好的消息,你应该编写自己的函数,它接受3个参数并返回::testing::AssertionResult,如Google Test文档Using a Function That Returns an AssertionResult中所述。然后,您可以将该函数与EXPECT_TRUE一起使用。