我在strings.xml资源文件中有以下文字:
<string name="txt_to_assert">My Text</string>
通常在应用程序代码中,要使用此文本并在屏幕上显示,我要执行以下操作:
getString(R.string.main_ent_mil_new_mileage);
目前,我尝试在使用Espresso编写的UI测试中使用此字符串资源。我想做类似的事情:
String myTextFromResources = getString(R.string.main_ent_mil_new_mileage);
onView(allOf(withId(R.id.my_text_on_screen), withText(myTextFromResources))
.check(matches(isDisplayed()));
但是,此处不能使用getString(...)
方法
有没有办法从strings.xml资源文件中获取文本并在使用Espresso编写的测试中使用它?
答案 0 :(得分:47)
使用此功能:
private String getResourceString(int id) {
Context targetContext = InstrumentationRegistry.getTargetContext();
return targetContext.getResources().getString(id);
}
您只需使用字符串的ID调用它并执行操作:
String myTextFromResources = getResourceString(R.string.main_ent_mil_new_mileage);
onView(allOf(withId(R.id.my_text_on_screen), withText(myTextFromResources))
.check(matches(isDisplayed()));
*新Espresso版的编辑:
使用新版Espresso,您应该可以使用 ViewMatcher 直接调用字符串资源。首先,我建议直接尝试此导入
import static android.support.test.espresso.matcher.ViewMatchers.withText;
然后在代码中:
withText(R.string.my_string_resource)
答案 1 :(得分:1)
androidx.test.platform.app.InstrumentationRegistry
已弃用androidx.test.core.app.ApplicationProvider
val targetContext: Context = ApplicationProvider.getApplicationContext()
val test: String = targetContext.getResources().getString(R.string. my_text_on_screen)
答案 2 :(得分:0)
如果必须在String资源之前添加文本,则必须这样做
val text=getApplicationContext<Context().getResources().getString(R.string.title_tenth_char)
现在您有权访问文本,将字符串附加到该文本
答案 3 :(得分:0)
科特琳:
var resources: Resources = InstrumentationRegistry.getInstrumentation().targetContext.resources