2015-04-03 1 views
0

Примечание: Сейчас я использую настройку Google recommends для тестирования JUnit в Android Studio.JUnit in Android Studio не использует форматирование валюты

Я пытаюсь выполнить модульное тестирование на куске кода, который хранит значение валюты как двойное и выводит строку в формате этой валюты. Я использую java.text.NumberFormat сделать это:

public NumberFormat viewFormat; 
public NumberFormat editFormat; 

public CurrencyField(String languageCode, String countryCode) { 
    viewFormat = NumberFormat.getCurrencyInstance(new Locale(languageCode, countryCode)); 
    viewFormat.setRoundingMode(RoundingMode.FLOOR); 

Вот где я получаю значение, которое я хочу быть отформатирован для отображения:

public String getDisplayValue() 
{ 
    double numberValue = (double) mValue.getValue(); 
    return mField.viewFormat.format(numberValue); 
} 

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

Field currencyField = new CurrencyField("he", "ISR"); 

где "he" и "ISR" являются коды для иврита и Израиля соответственно. Если номер хранится внутренне как double 45.12, он выводится как строка "45.12 ₪", что является правильным. Однако, когда я пытаюсь запустить тот же код, используя JUnit, вот что тестовые результаты:

org.junit.ComparisonFailure: 
Expected :45.12 ₪ 
Actual :¤ 45.12 

Мне кажется, что JUnit или Android студии как-то не хватает некоторых библиотек Java во время тестирования. Я даже не смог получить символ шекеля программно для ожидаемого значения. Я пытался использовать java.util.Currency, и это не сработало, а затем я попытался

expectedDisplayValue += ((CurrencyField) field).viewFormat.getCurrency().getSymbol(new Locale("he", "ISR")); 

и что не работает. Я должен был явно определить

private String expectedDisplayValue = "45.12 ₪"; 

Почему форматирование работает во время выполнения, но не в тесте?

+0

Я предполагаю, что языковой стандарт не установлен в JUnit. – chrylis

ответ

0

Оказалось, что я использую неправильный код страны ISO 3166-1. Я использовал альфа-код («ISR») вместо альфа-кода («IL»), который работал в приложении, но не в тесте. Тест по-прежнему дает мне неправильный символ и форматирование, когда я использую иврит, но я задам отдельный вопрос для этого. Тем временем я буду использовать другую валюту для тестирования.

 Смежные вопросы

  • Нет связанных вопросов^_^