В приложении есть простой код:
String.format(Locale.getDefault(), "%d", count)
И все хорошо, но когда пользователь выберет на телефоне арабский язык, цифры будут отображаться в буквальном арабском формате (очевидно).
Так в чем же проблема?
Я хочу заменить Locale.getDefault () на Locale.US, чтобы получить «нормальные» числа, но также хочу написать тест для этого.
И есть проблема.
Robolectric в тестах показывает номер для отл. «3» вместо «٢».
Мой тестовый код:
public class SideMenuMainContentViewTest {
private static final String ARABIC_LANGUAGE_LOCALE_CODE = "ar-rEG";
private SideMenuMainContentView sideMenuMainContentView;
private AttributeSet attributeSet;
@Before
public void setup() {
attributeSet = Robolectric.buildAttributeSet().build();
sideMenuMainContentView = new SideMenuMainContentView(ApplicationProvider.getApplicationContext(), attributeSet);
}
@Test
public void test_getBookedRidesCountText() {
assertEquals("3", sideMenuMainContentView.getBookedRidesCountText(3));
}
@Test
@Config(qualifiers = ARABIC_LANGUAGE_LOCALE_CODE)
public void test_getBookedRidesCountText_notSupportedLanguage() {
assertEquals("3", sideMenuMainContentView.getBookedRidesCountText(3));
}
}
Есть идеи, как изменить это поведение и получить литеральные числа в тестах, например, при запуске приложения?