2016-08-30 10 views
0

私はエスプレッソで新しく、カスタムアダプタを使用してListViewで挿入、削除、および変更をテストしようとしています。ListViewでのエスプレッソでのテストの削除

挿入は簡単ですが、新しい要素を追加してListView内に追加して、追加されたことを確認するだけです。最初の行の

  1. クリックして、削除ボタン上:

    しかし、問題は、削除が付属していますが、これは私がやろうとしているものです。

  2. 削除を確認してください。
  3. ¿どうすればその要素が削除されたことを保証できますか?

私は、アイテムを削除する前にそのアイテムの内容を知り、それ以上行が存在しないことを確認する必要があると思います。

どうすればいいですか?たぶん私はこのテストを実行するための適切な道ではないと私は別の方法でテストを行う必要がありますが、私は情報を見つけることができません。

@Test 
public void deleteEdition() { 
    startActivityWithintent(); 

    // push delete button and delete 
    onData(anything()).inAdapterView(withId(R.id.listEdition)) 
      .atPosition(1) 
      .onChildView(withId(R.id.imageDelete)) 
      .perform(click()); 

    // confirm delete 
    onView(withId(R.id.buttonDelete)).check(matches(isDisplayed())); 
    onView(withId(R.id.buttonDelete)).perform(click()); 


    // HOW CAN I CHECK THE ELEMENT DOES NOT EXISTS? 
    // onView(withId(R.id.listEdition)) 
    //  .check(matches(not(withText(????)))); 
} 

ありがとうございます。

onView(withId(R.id.listEdition)) 
.check(matches(not(hasDescendant(withText("should not exist"))))); 

またはこれが動作しない場合は、文字列の部分を検索:

答えて

2

は、このようにそのチャイルズ内部の特定のテキストを、持っている何のビューが存在しない場合、検索してみてください。

onView(withId(R.id.listEdition)) 
.check(matches(not(hasDescendant(withText(containsString("should not exist")))))); 

私のコンピュータで再生しようとすると動作します。行が実際に次のコードを使用して削除された場合、あなたは見つけることができます削除ボタンをクリックした後

+0

はい、私の問題は、削除する前に要素の「テキスト」が何であるかを知る必要があることです。そのテキストで私はそれが存在しないことを確認することができた。 – adalPaRi

+0

定数に格納されたテスト値を使って新しい行を追加し、対応する削除ボタンを押し、後で追加した定数の値が存在する行がないかどうかを確認しますか? – richard

+0

これは私が今やっていることです。しかし、実際には、この場合は2つのテストを実行しています:追加と削除。私は何を意味するか知っていますか? – adalPaRi

0

ストア「matchedText」

this.matchedText = null; 
this.rowCounter = -1; 

    onView(new Matcher<View>() { 

     @Override 
     public boolean matches(Object item) { 
      boolean matches = withId(R.id.imageDelete).matches(item); 
      if(matches){ 
       rowCounter++; 
       if(rowCounter == 5){ // 5 is an example of the index you want to access  
        View view = (View) item; 
        matchedText = ((TextView)view.getParent()).getText().toString(); // find the matching view by navigating to the right parent and child to get the text you need 
        return true 
       } 
       return false; 
      } 
      return false; 
     } 

     @Override 
     public void describeMismatch(Object item, Description mismatchDescription) { 

     } 

     @Override 
     public void _dont_implement_Matcher___instead_extend_BaseMatcher_() { 

     } 

     @Override 
     public void describeTo(Description description) { 

     } 
    }).check(matches(isDisplayed())); 

のようなあなたがプロパティで、削除したい行のテキストを、:

onView(withId(R.id.listEdition)) 
.check(matches(not(hasDescendant(withText(this.matchedText))))); 
関連する問題