GTest EXPECT_DOUBLE_EQ терпит неудачу при ошибке с плавающей запятой

Я пытался использовать Google Test Framework и не могу понять, почему следующий код:

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

Решение

(Добавление ответа для завершения поста, так как ОП подтвердил ошибку в комментарии.)

Как показано в отчете об ошибке, OP случайно добавил знак минус к результату, что, безусловно, неверно. Удаление опечатки решило проблему.

Кроме того, в GTest и многих других инфраструктурах модульного тестирования (JUnit и т. Д.) Порядок параметров утверждения

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

в противном случае в отчете об ошибке будет отображено описание ввода, как показано в OP.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]