C++ Google测试检查浮点不相等

C++ Google测试检查浮点不相等,c++,googletest,C++,Googletest,是否存在浮点值不等于第二个值的期望值 例如,EXPECT_FLOAT_EQ(val1,val2)的反面我认为GTest没有这个功能,他们在自己的文章中解释道 有些浮点运算很有用,但不是经常使用。为了避免新宏的激增,我们将它们作为谓词格式函数提供,可用于谓词断言宏(例如EXPECT_PRED_FORMAT2等) 您可以按照@idclev 463035818的建议定义一个谓词,并将其传递到EXPECT\u PRED\u FORMAT2(PRED,val1,val2)。谓词必须与签名一致: testi

是否存在浮点值不等于第二个值的期望值


例如,EXPECT_FLOAT_EQ(val1,val2)的反面

我认为GTest没有这个功能,他们在自己的文章中解释道

有些浮点运算很有用,但不是经常使用。为了避免新宏的激增,我们将它们作为谓词格式函数提供,可用于谓词断言宏(例如EXPECT_PRED_FORMAT2等)

您可以按照@idclev 463035818的建议定义一个谓词,并将其传递到
EXPECT\u PRED\u FORMAT2(PRED,val1,val2)
。谓词必须与签名一致:

testing::AssertionResult pred(const char* expr1, const char* expr2,
                                    double val1, double val2);

其中
expr1
expr2
是将在断言消息中使用的浮点参数的字符串表示形式。

您可以使用Google Mock的浮点。它们可以很容易地组合成更复杂的断言:

EXPECT_THAT(val1, Not(DoubleEq(val2)))

您要检查是否完全相等还是检查abs(val1-val2)>eps?如果它是您可以直接为该表达式断言的第二个