2017-01-18 6 views
1

私はエスプレッソ2.2.1をアンドロイドテストに使用しています。私はエスプレッソがあまりにも速く走っているため、テストケースはほとんど実行されておらず、失敗しているケースもあります。要素は表示されず、テストケースが失敗する理由もありません。これらの実行を遅くする方法はありますか?エスプレッソテストケースを遅くする必要があります

答えて

1

あなたは、テキストまたは任意でIDまたはビューのビューをお待ちしています特定のマッチャー作成することができます。そして、あなたが好きそれを使用することができます

public static ViewAction waitViewWithMatcher(Func1<View, Boolean> predicate, final long millis) { 
    return new ViewAction() { 
     @Override 
     public Matcher<View> getConstraints() { 
      return isRoot(); 
     } 

     @Override 
     public String getDescription() { 
      return "wait for a specific during " + millis + " millis."; 
     } 

     @Override 
     public void perform(final UiController uiController, final View view) { 
      uiController.loopMainThreadUntilIdle(); 
      final long startTime = System.currentTimeMillis(); 
      final long endTime = startTime + millis; 

      do { 
       for (View child : TreeIterables.breadthFirstViewTraversal(view)) { 
        if (predicate.call(child)) { 
         return; 
        } 
       } 

       uiController.loopMainThreadForAtLeast(50); 
      } 
      while (System.currentTimeMillis() < endTime); 

      throw new PerformException.Builder() 
        .withActionDescription(this.getDescription()) 
        .withViewDescription(HumanReadables.describe(view)) 
        .withCause(new TimeoutException()) 
        .build(); 
     } 
    }; 
} 

を:

onView(isRoot()).perform(EspressoTestUtil.waitViewWithMatcher(v -> withId(R.id.view_id).matches(v), 30000)); 

それはIDとビューを待ちview_id、30000ミリ秒。

+0

predicate.call(子)とFunc1 述部でエラーが発生しています。依存関係を追加する必要があるか、またはこれらの2つの特定の定義がありますか? – sanketprabhune

+0

ああ、申し訳ありません。それはrxjavaのものです。プロジェクトにhttp://grepcode.com/file/repo1.maven.org/maven2/io.reactivex/rxjava/1.0.13/rx/functions/Func1.java#Func1をコピーして貼り付けるだけで済みます。 – Divers

+0

uiController.loopMainThreadForAtLeast(50)このメソッドはメインスレッドを50ミリ秒間ループさせますか? – sanketprabhune

関連する問題