Robolectric String.format () недопустимое поведение при форматировании чисел - PullRequest
0 голосов
/ 08 июля 2019

В приложении есть простой код:

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));
    }
}

Есть идеи, как изменить это поведение и получить литеральные числа в тестах, например, при запуске приложения?

...