我正在尝试从UI视图中读取值。这是我用来查找我需要的字符串的方法。这仅返回textView
id,而不返回内容。
public static String getSpeedIndex(){
return onView(allOf(withId(R.id.slider_index),
isDescendantOfA(withId(R.id.speed_number_column))))
.toString();
}
如何返回我需要的字符串?
答案 0 :(得分:3)
正如评论中所提到的,我们并未将此操作作为Espresso API的一等公民,以鼓励测试作者明确表达操作和断言,并阻止测试中的条件逻辑。考虑到这一点,我鼓励您研究为您的服务器编写假文件,以便您可以控制测试输入(并避免条纹)并避免条件逻辑。
但是,如果您绝对必须获得该值,则可以执行以下操作:
final AtomicReference<String> textFromView = new AtomicReference<String>();
onView(<matcher for your view>).perform(new ViewAction() {
@Override
public Matcher<View> getConstraints() {
// TODO - at the very least, check that this is an instance of TextView
}
@Override
public String getDescription() {
return "get text from text view"
}
@Override
public void perform(UiController uiController, View view) {
textFromView.set(((TextView) view).getText());
}
}
当然,如果你经常这么做(你不应该这样做),你可以把所有这些放在一个单独的类中,使它更好。