我需要在更改应用语言时检查我的片段。 这是我的Android Espresso测试:
@Test
public void changeLanguages() {
Resources resources = context.getResources();
String[] appLanguages = resources.getStringArray(R.array.app_lang_codes);
for (int index = 0; index < appLanguages.length; index++) {
String currentLang = appLanguages[index];
Locale currentLocale = new Locale(currentLang);
if (currentLocale.equals(AppLanguageService.getLocaleRO(context))) {
// click Romanian
onView(withId(R.id.containerLanguageRO)).perform(click());
onView(withId(R.id.textViewSelectLanguage)).check(matches(withText("Selecți limba")));
} else if (currentLocale.equals(AppLanguageService.getLocaleEN(context))) {
// click English
onView(withId(R.id.containerLanguageEN)).perform(click());
onView(withId(R.id.textViewSelectLanguage)).check(matches(withText("Select language")));
}
}
}
Ant它的工作正常。 OK!
但正如您所看到的,我需要为测试的特定语言硬编码字符串。 “Selecţilimba”和“选择语言”。而且我认为这不好。
是否可以不使用硬代码字符串来检查文本是否以特定语言显示?
答案 0 :(得分:0)
您可以使用
mActivityRule.getActivity()
获取您正在测试的活动。有了这个,你可以从你的资源中获取一个字符串,如下所示:
mActivityRule.getActivity().getResources().getString(R.string.your_string)
您可以像这样重写支票:
onView(withId(R.id.textViewSelectLanguage)).check(matches(withText(mActivityRule.getActivity().getResources().getString(R.string.your_string))));
其中your_string
是strings.xml文件中字符串资源的名称。