Я использую espresso 2.2.1 для тестирования Android. Я запускаю несколько тестовых примеров, а некоторые не работают, потому что эспрессо работает слишком быстро. Элементы даже не загружены для отображения, и именно поэтому тестовые примеры не работают. Есть ли способ замедлить эти прогоны?Мне нужно замедлить работу тестового теста эспрессо
1
A
ответ
1
Вы можете создать конкретный Искателя, который будет ждать для просмотра с идентификатором или просмотреть с текстом или что-то:
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));
Он ожидает представления с идентификатором view_id
, 30000 мс.
predicate.call (child) и префикс 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