2016-11-14 13 views
0

リストビュー項目を操作する際にコードを書き込もうとしているときにAmbiguousViewMatcherException例外が発生します。シナリオは次のとおりです。Espresso AmbiguousViewMatcherException

私は、リストのほぼ250行を持つ2つのビュー

  1. のTextView
  2. buttonView

とリストビューを持っています。すべてのボタンにはテキスト「予約」または「キャンセル」があります。彼らは順番にシャッフルされています。エスプレッソにリストの最初の「予約」ボタンをクリックさせたい。私は多くのシナリオを試したが、まだこれを修正できなかった。誰か助けてください。続き

は今

onView(withId(R.id.List)) 
       .check(matches(withAdaptedData(withItemContent("Book it")))); 

私のコードです///////////////////////////////// ///////////////////////

private static Matcher<View> withAdaptedData(final Matcher<Object> dataMatcher) { 
     return new TypeSafeMatcher<View>() { 
      @Override 
      public void describeTo(Description description) { 
       description.appendText("with class name: "); 
       dataMatcher.describeTo(description); 
      } 

      @Override 
      public boolean matchesSafely(View view) { 
       if (!(view instanceof AdapterView)) { 
        return false; 
       } 
       @SuppressWarnings("rawtypes") 
       Adapter adapter = ((AdapterView) view).getAdapter(); 
       for (int i = 0; i < adapter.getCount(); i++) { 
        if (dataMatcher.matches(adapter.getItem(i))) { 
         return true; 
        } 
       } 
       return false; 
      } 
     }; 
    } 

//////////////////// ///////////////////////

android.support。 test.espresso.AmbiguousViewMatcherException: 'with ID: com.bottegasol。 com.migym.EmpireSportFit:id/List 'は階層内の複数の ビューに一致します。問題のビューには、 '**** MATCHES ****'と表示されます。ここで

答えて

0

は、私が見つけた一例であり、それが役に立てば幸い:

public void testClickOnFirstAndFifthItemOfLength8() { 
    onData(is(withItemSize(8))) 
     .atPosition(0) 
     .perform(click()); 
    onView(withId(R.id.selection_row_value)) 
     .check(matches(withText("10"))); 
    onData(is(withItemSize(8))) 
     .atPosition(4) 
     .perform(click()); 
    onView(withId(R.id.selection_row_value)) 
     .check(matches(withText("14"))); 
    } 

ソース: https://android.googlesource.com/platform/frameworks/testing/+/android-support-test/espresso/sample/src/androidTest/java/android/support/test/testapp/AdapterViewTest.java

0

は、エラーメッセージによると、あなたはID R.id.Listに等しい複数のビューを抱えています。最初にビュー階層をチェックし、リストID(id/List)を、一致させるビューの一意のIDで置き換える必要があります。

関連する問題