Точность с плавающей точкой в ​​тестах FIT - PullRequest
3 голосов
/ 02 ноября 2009

Есть ли хорошие / лучшие практики для работы со значениями с плавающей запятой при проверке результатов с помощью фреймворка?

Наше приложение выполняет много расчетов. В большинстве случаев проверка значений с точностью более 6 или 8 цифр не имеет никакого смысла. Поэтому я хотел бы указать точность, которая используется при сравнении ожидаемых и фактических значений.

Мое решение было бы установить точное значение, а затем сравнить значения в моем ColumnFixture, содержащем контрольные примеры.

Это приведет к чему-то вроде:

!|info.fitnesse.fixturegallery.ColumnFixtureTest|
|firstSummand|secondSummand|precision|expectedResult|calculateSumAndCheck()|
|2.1|3.3|0.0001|5.3|true|

Основным недостатком этого подхода было бы то, что я не смог бы использовать функции сравнения подгонки, а написал свои собственные.

1 Ответ

2 голосов
/ 07 ноября 2009

Вы можете использовать согласованное форматирование строки для ваших типов с плавающей запятой и сравнивать строку со строкой. В любом случае Fit действительно выполняет ToString () для ваших значений и сравнивает их с текстом в вики, поэтому, если вы предоставляете свой собственный формат строки, вам не нужно изменять встроенные сравнения в Fit.

Вы не указали язык, но, например, в C # вы могли бы использовать статический вспомогательный метод или метод расширения для типов с плавающей запятой (float, double и т. Д.), Называемых что-то вроде «ToStringForComparison ()» , Все ваши тестовые наборы должны будут использовать это в методах доступа к свойствам для значений, которые вы хотите сравнить в своих тестах.

Edit:

Если вы хотите контролировать точность, вы можете сделать это, передав значение точности в функцию форматирования, сохраняя значение по умолчанию для значений, где точность не важна.

...