質問

私のUIビューから値を読みようとしています。これが私が必要な文字列を見つけるために私が使用する方法です。これは、コンテンツではなくtextView IDを返すだけです。

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

どのように私は必要な文字列を返すことができますか?

役に立ちましたか?

解決

コメントで述べたように、テスト作者のテスト作者の最初のクラスの市民は、テスト著者のアクションとアサーションとテストで条件付きロジックを阻止することを奨励するために、この行動を推奨されませんでした。それを念頭に置いて、私はあなたのサーバーの偽物を書くことを勧めて、テストの入力を制御することができ(そしてゆったりとしない)、条件付き論理を回避することができます。

しかし、絶対に値を取得する必要がある場合は、次のようなことができます。

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

もちろん、これをたくさん行うなら(あなたがしてはいけません)、あなたはそれをすべてのクラスに入れることによってそれをニカサーにすることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top