我正在为Fragment编写测试用例。我可以将文本设置为Edittext,但无法通过测试将文本视图设置为文本视图。请有人帮我解决这个问题.Bellow是我编辑文本的代码。
onView(withId(R.id.editText))
.perform(typeText("my text"), closeSoftKeyboard());
请帮我知道如何将文字设置为文字视图。
答案 0 :(得分:5)
由于typeText的前提条件而发生了这种情况,即
查看前提条件:
必须在屏幕上显示
必须支持输入法
TextView
不支持Input method(用户无法通过键盘或其他内容输入值)因此问题
解决方案:您可以实施自己的观看ViewAction
From how to create View action to set text on TextView
public static ViewAction setTextInTextView(final String value){
return new ViewAction() {
@SuppressWarnings("unchecked")
@Override
public Matcher<View> getConstraints() {
return allOf(isDisplayed(), isAssignableFrom(TextView.class));
// ^^^^^^^^^^^^^^^^^^^
// To check that the found view is TextView or it's subclass like EditText
// so it will work for TextView and it's descendants
}
@Override
public void perform(UiController uiController, View view) {
((TextView) view).setText(value);
}
@Override
public String getDescription() {
return "replace text";
}
};
}
然后你可以做
onView(withId(R.id.editText))
.perform(setTextInTextView("my text"));