用浓咖啡找到一个字符串

时间:2014-01-09 21:29:25

标签: android android-testing android-espresso

我正在尝试从UI视图中读取值。这是我用来查找我需要的字符串的方法。这仅返回textView id,而不返回内容。

    public static String getSpeedIndex(){
    return onView(allOf(withId(R.id.slider_index),
            isDescendantOfA(withId(R.id.speed_number_column))))
            .toString();
    }

如何返回我需要的字符串?

1 个答案:

答案 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());
  }
}

当然,如果你经常这么做(你不应该这样做),你可以把所有这些放在一个单独的类中,使它更好。