C # модульное тестирование вопросов точности чисел - PullRequest
3 голосов
/ 25 октября 2010

Я тестирую основные математические функции, которые будут возвращать среднее значение / дисперсию / стандартное отклонение.Проблема, с которой я сталкиваюсь, заключается в том, что я не могу получить точность математического «ожидаемого значения», возвращаемого функцией.Например, если функция дисперсии возвращает 50.5555555555566, даже если я явно установлю ожидаемое значение 50.5555555555566, она скажет, что это два разных типа double, и модульный тест не пройден.

Ниже приведен фактический результат модульного теста:

Ошибка Assert.AreEqual.Ожидаемое: <50,5555555555556>.Факт: <50.5555555555566>.

Кто-нибудь может посоветовать способ обойти это?Я использую встроенный пакет визуального тестирования студии.Спасибо.

1 Ответ

8 голосов
/ 25 октября 2010

Числа с плавающей запятой (одинарные / двойные) должны быть проверены со значением допуска.Таким образом, вы можете сказать, что если два числа находятся в пределах 0,0001 (допуск) друг от друга, считайте их равными

В NUnit у вас есть утверждения сравнения .например, следующая перегрузка AreEqual, найдите эквивалентную для MSTest.

Assert.AreEqual( double expected, double actual, double tolerance,
                 string message );

Обновление: Это должен быть метод , необходимый для MSTest.Попробуйте и посмотрите, решит ли это вашу проблему ..

...