1
私はエスプレッソ2.2.1をアンドロイドテストに使用しています。私はエスプレッソがあまりにも速く走っているため、テストケースはほとんど実行されておらず、失敗しているケースもあります。要素は表示されず、テストケースが失敗する理由もありません。これらの実行を遅くする方法はありますか?エスプレッソテストケースを遅くする必要があります
私はエスプレッソ2.2.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ミリ秒。
predicate.call(子)とFunc1述部でエラーが発生しています。依存関係を追加する必要があるか、またはこれらの2つの特定の定義がありますか? –
sanketprabhune
ああ、申し訳ありません。それはrxjavaのものです。プロジェクトにhttp://grepcode.com/file/repo1.maven.org/maven2/io.reactivex/rxjava/1.0.13/rx/functions/Func1.java#Func1をコピーして貼り付けるだけで済みます。 – Divers
uiController.loopMainThreadForAtLeast(50)このメソッドはメインスレッドを50ミリ秒間ループさせますか? – sanketprabhune