2012-09-06 67 views
-1

失败我尝试使用谷歌测试框架并不能明白为什么下面的代码:GTEST EXPECT_DOUBLE_EQ浮点错误

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

你确定你输入了30.2而不是-30.2吗? – kennytm

+0

真的,没有注意到这种类型 - 这就是测试失败的原因。非常感谢! –

+0

你应该接受解决你的问题的答案。这是评分下的绿色复选标记。 – Collin

回答

2

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

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

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

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

否则错误报告将有输入描述翻转,就像什么OP证明。