GTest EXPECT_DOUBLE_EQ因浮点错误而失败

时间:2012-09-06 09:32:16

标签: c++ floating-point googletest

我尝试使用谷歌测试框架,但无法看到为什么以下代码:

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,但不明白为什么以上不起作用......

1 个答案:

答案 0 :(得分:2)

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

如错误报告中所示,OP意外地在结果中添加了减号,这肯定是错误的。删除拼写错误解决了这个问题。

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

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

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