jUnit тестирование Double.toString в разных культурах - PullRequest
3 голосов
/ 19 ноября 2011

У меня есть библиотека с открытым исходным кодом, которая имеет множество модульных тестов, которые сравнивают строковые формы чисел.

Эти тесты проходят нормально в en-GB, en-US и других культурах, где цифры обычно записываются в виде 1,234.00.

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

Как можно принудительно запустить тесты jUnit как en-GB?

РЕДАКТИРОВАТЬ такие вещи доступны в NUnit.

Ответы [ 3 ]

4 голосов
/ 19 ноября 2011

Я не уверен, что это стандарт для всех JVM, но, используя Oracle JVM в Windows, вы можете использовать системные свойства user.language и user.country для установки локали при запуске JVM:

java -Duser.language=en -Duser.country=GB ...

Конечно, вы также можете установить локаль по умолчанию в Java, используя

Locale.setDefault(new Locale("en", "GB"));

Обратите внимание, что Double.toString не зависит от локали.

1 голос
/ 19 ноября 2011

Как запустить jUnit?

Передача соответствующего свойства языка будет зависеть больше от вашей среды, чем от самого jUnit.

В качестве альтернативы (и я думаю, что это лучшее решение), вы можете сравнивать значения, а не строки:

assertEquals(12.3, Double.valueOf(aDoubleString));
assertEquals(Double.toString(12.3), aDoubleString);

вместо

assertEquals("12.3", aDoubleString)
0 голосов
/ 28 июня 2013

Существует два основных правила JUnit 4 для изменения локали по умолчанию для пары тестов:

LocaleRule , очень простая реализация.

DefaultLocaleRule имеет несколько статических вспомогательных методов и позволяет переключать локаль по умолчанию для отдельного теста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...