Android Espresso: последовательное выполнение нескольких тестов

Я пытаюсь запустить серию тестов с помощью Espresso для Android. Похоже, что между запусками действия НЕ закрываются. Независимо от состояния приложения после одного теста, его осталось для следующего теста.

Мне нужно запустить каждый из моих тестов из нового приложения. В Robotium это обрабатывается с помощью solo.finishOpenedActivites () в методе tearDown ().
http://robotium.googlecode.com/svn/doc/com/robotium/solo/Solo.html#finishOpenedActivities ()

Как это можно сделать с помощью эспрессо?

Проблема с предоставленным исправлением в отчете об ошибке состоит в том, что это будет выполнено только при завершении всего пакета. Если вы хотите иметь чистый стек активности после каждого теста, вам нужно вручную что-то сделать. Я написал небольшой класс, который делает почти то же самое, что и исправление вышеупомянутого билета, но может быть выполнено в любой момент времени.

import android.app.Activity; import android.os.Handler; import android.os.Looper; import com.google.android.apps.common.testing.testrunner.ActivityLifecycleMonitor; import com.google.android.apps.common.testing.testrunner.ActivityLifecycleMonitorRegistry; import com.google.android.apps.common.testing.testrunner.Stage; import java.util.ArrayList; import java.util.EnumSet; import java.util.List; public final class ActivityFinisher implements Runnable { public static void finishOpenActivities() { new Handler(Looper.getMainLooper()).post(new ActivityFinisher()); } private ActivityLifecycleMonitor activityLifecycleMonitor; public ActivityFinisher() { this.activityLifecycleMonitor = ActivityLifecycleMonitorRegistry.getInstance(); } @Override public void run() { final List<Activity> activities = new ArrayList<Activity>(); for (final Stage stage : EnumSet.range(Stage.CREATED, Stage.STOPPED)) { activities.addAll(activityLifecycleMonitor.getActivitiesInStage(stage)); } for (final Activity activity : activities) { if (!activity.isFinishing()) { activity.finish(); } } } } 

Решение Sebastian Gröbler написало отлично. Тем не менее, библиотеки были переименованы в последнюю тестовую библиотеку Espresso и Android, вот тот же класс, написанный для Espresso 2.x

 import android.app.Activity; import android.os.Handler; import android.os.Looper; import android.support.test.runner.lifecycle.ActivityLifecycleMonitor; import android.support.test.runner.lifecycle.ActivityLifecycleMonitorRegistry; import android.support.test.runner.lifecycle.Stage; import java.util.ArrayList; import java.util.EnumSet; import java.util.List; public final class ActivityFinisher implements Runnable { public static void finishOpenActivities() { new Handler(Looper.getMainLooper()).post(new ActivityFinisher()); } private final ActivityLifecycleMonitor activityLifecycleMonitor; private ActivityFinisher() { this.activityLifecycleMonitor = ActivityLifecycleMonitorRegistry.getInstance(); } @Override public void run() { final List<Activity> activities = new ArrayList<Activity>(); for (final Stage stage : EnumSet.range(Stage.CREATED, Stage.STOPPED)) { activities.addAll(activityLifecycleMonitor.getActivitiesInStage(stage)); } for (final Activity activity : activities) { if (!activity.isFinishing()) { activity.finish(); } } } } 

GoogleInstrumentation фактически пытается завершить все открытые действия, но не может сделать это должным образом из-за глупой ошибки: https://code.google.com/p/android-test-kit/issues/detail?id=66

Патч, связанный с проблемой, устраняет эту проблему.

Intereting Posts
Не удалось открыть базу данных / Не удалось изменить локаль для (базы данных) на 'en_US' Как получить ресурс (int) из String – Android Play In-app Billing v3 – Должен ли я сохранять токены покупки? Вызывает много вызовов API от мобильного приложения? Уведомление о блокировке Android Facebook Нарисуйте округленное изображение на белом фоне с помощью Picasso Лента новостей с facebook wall на приложение для Android Меню параметров изменений во время выполнения – invalidateOptionsMenu () Как я могу проверить потребление сети Android для Android? Тестирование пользовательских представлений с помощью Robolectric: ширина и высота всегда равны 0 Как я могу отключить весь эффект прокрутки в моем приложении? RelativeLayout высота для заполнения оставшегося пространства Обновление останавливается, когда в AndEngine появляется диалоговое окно Android gotchas и извлеченные уроки Нет регистрации в Commons в Android?