GTest EXPECT_DOUBLE_EQ因浮点错误而失败

GTest EXPECT_DOUBLE_EQ fails on floating point error

本文关键字:错误 失败 EXPECT DOUBLE EQ GTest      更新时间:2023-10-16

我尝试使用谷歌测试框架,但看不出为什么会出现以下代码:

TEST(MathTest, BelowZeroCandF)
{
    EXPECT_DOUBLE_EQ(convertCtoF(-1), 30.2);
}

其中

double convertCtoF(double c)
{
    return 32+1.8*c;
}

失败:

Failure
Value of: -30.20
  Actual: -30.199999999999999
Expected: tc.convertCtoF(-1)
Which is: 30.199999999999999
[  FAILED  ] MathTest.belowZeroCaboveZeroF (1 ms)

我知道我可以使用EXPECT_NEAR,但不明白为什么上面的不起作用。。。

(添加答案以完成帖子,因为OP确认了评论中的错误。)

如错误报告中所示,OP意外地在结果中添加了一个减号,这肯定是错误的。去掉打字错误就解决了问题。

此外,在GTest和许多其他单元测试框架(JUnit等)中,断言的参数顺序是

EXPECT_DOUBLE_EQ(30.2, convertCtoF(-1));
//               ^     ^ actual value
//               expected value

否则,错误报告将翻转输入描述,就像OP演示的一样。

相关文章: