Я пытался использовать 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, но не понимаю, почему выше не работает …
(Добавление ответа для завершения поста, так как ОП подтвердил ошибку в комментарии.)
Как показано в отчете об ошибке, OP случайно добавил знак минус к результату, что, безусловно, неверно. Удаление опечатки решило проблему.
Кроме того, в GTest и многих других инфраструктурах модульного тестирования (JUnit и т. Д.) Порядок параметров утверждения
EXPECT_DOUBLE_EQ(30.2, convertCtoF(-1));
// ^ ^ actual value
// expected value
в противном случае в отчете об ошибке будет отображено описание ввода, как показано в OP.
Других решений пока нет …