Как создать модульный тест, в котором ответ должен быть округлен?
Я пишу юнит-тест, используя библиотеку Google Test. После компиляции я получаю сообщение об ошибке:
"Error: elevation which is:10 to be equal to:Z which is 9.999999999999999325"
Как я могу округлить Z, чтобы тест мог пройти и был равен 10?
1 ответ
Решение
Правильный подход заключается не в округлении и проверке на точное равенство, а в проверке на приблизительное равенство. Google Test имеет ASSERT_FLOAT_EQ
а также EXPECT_FLOAT_EQ
, которые проходят, если два числа с плавающей точкой ничем не отличаются, и двойные версии этих макросов, и EXPECT_NEAR
, что позволяет указать приемлемую разницу.
Документация находится в gtest.h.