googletest的断言宏非常棒,因为它们在发生故障时提供了很好的消息。我正在寻找一个更复杂的浮点比较的可能性: "小于或接近后者的准确度" 因此,根据Advanced Guide on github,这至少是可能的,而不会给浮点数的接近程度提供最大绝对误差:
EXPECT_PRED_FORMAT2(::testing::FloatLE, val1, val2);
就在他们正上方,他们会说出如何在给定错误的情况下关闭"工作原理:
EXPECT_NEAR(val1, val2, abs_error);
所以我认为组合也必须有效。查看源代码,EXPECT_NEAR如何扩展我看到有更高阶的宏,如
EXPECT_PRED_FORMAT3
再次接受另一个值。但是,我无法让这种组合直接工作。
所以问题是:这有可能吗?如何?
当然,人们可以做一个解决方法,编码比较并只比较一个布尔值。但是,如果发生故障,这就缺少了很好的gtest输出。
答案 0 :(得分:1)
您可以使用EXPECT_PRED3(pred, val1, val2, val3)
,但您必须编写自己的 pred 函数,该函数需要3个参数并返回true
或false
。
如果你想要好的消息,你应该编写自己的函数,它接受3个参数并返回::testing::AssertionResult
,如Google Test文档Using a Function That Returns an AssertionResult中所述。然后,您可以将该函数与EXPECT_TRUE
一起使用。