Почему сравнение double в Eclipse и maven отличается? - PullRequest
0 голосов
/ 04 июля 2018

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

В тесте JUnit я проверяю, что если свойство не установлено, это значение является значением по умолчанию.

Мое свойство - это некоторое пороговое значение в миллисекундах, которое в виде строки преобразуется в double и в секунды. Значение по умолчанию 1000, поэтому 0,001 * 1000 = 1,0.

В моем коде у меня есть в основном это (я использую JUnit 4.8):

double defaultThreshold = 1.0;
double threshold = getThreshold();
Assert.assertEquals(0, Double.compare(defaultThreshold, threshold));

Я подумал, что может быть проблема с java-версией, но я попробовал это в Eclipse с Java 1.6, 1.7 и 1.8, и все прошло нормально в mvn. Я использую java 1.7.0_71, и это не сработало при сравнении с:

 expected:<0> but was:<1>

Примечание. Double.compare возвращает 0, если оба числа равны. https://www.tutorialspoint.com/java/lang/double_compare.htm Этот метод возвращает значение 0, если d1 численно равно d2; значение меньше 0, если d1 численно меньше d2; и значение больше 0, если d1 численно больше, чем d2.

1 Ответ

0 голосов
/ 15 августа 2018

Проблема была не в сравнении двойного, а в другом порядке выполнения JUnit в консоли maven и eclipse: / Причина проблемы заключалась в том, что в одном случае предыдущий тест влиял на другой тест, а в другом - не из-за другого порядка, который, как я ожидал, был бы таким же, но это не так.

...