Это вопрос из двух частей.
1 - Добавляет ли это значение в проект, чтобы проверить, соответствует ли каждая строка правильному виджету на нескольких языках для теста пользовательского интерфейса, связанного с деятельностью, или я должен использовать другой подход или просто не делать этого вообще?
2 - Предполагая, что это правильный подход, я попытался реализовать предложение из следующего поста . К сожалению, языковой стандарт не обновляется для моих тестов пользовательского интерфейса и не проходит один из двух тестов в зависимости от языка системы, который я уже установил на своем устройстве.
@RunWith(AndroidJUnit4ClassRunner.class)
public class RegisterActivityTest {
@Test
public void test_onScreenLoadStringsDisplayedInEnglish() {
testEnglishLocale();
onView(withId(R.id.welcome_text_view)).check(matches(
withText(WELCOME_EN)));
}
@Test
public void test_onScreenLoadStringsDisplayedInSpanish() {
testSpanishLocale();
onView(withId(R.id.welcome_text_view)).check(matches(
withText(WELCOME_ES)));
}
private void testEnglishLocale() {
setLocale("en", "US");
}
private void testSpanishLocale() {
setLocale("es", "ES");
}
private void setLocale(String language, String country) {
Locale locale = new Locale(language, country);
// here we update locale for date formatters
Locale.setDefault(locale);
// update locale for app resources
Resources res = InstrumentationRegistry.getInstrumentation().getTargetContext().getResources();
Configuration config = res.getConfiguration();
config.locale = locale;
res.updateConfiguration(config, res.getDisplayMetrics());
}
}