正如评论中提到的,我们没有将此操作作为 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());
}
}
当然,如果你经常这样做(你不应该这样做),你可以通过将所有这些放在一个单独的类中来使它变得更好。