安卓 Espresso : Running multiple tests sequentially

标签 android testing android-testing android-espresso

我正在尝试使用 Espresso for Android 运行一系列测试。看来在两次运行之间, Activity 并未关闭。无论应用在一次测试后的状态如何,都将留给下一次测试。

我需要从一个全新的应用程序启动运行我的每个测试。在 Robotium 中,这是在 tearDown() 方法中使用 solo.finishOpenedActivites() 处理的。
http://robotium.googlecode.com/svn/doc/com/robotium/solo/Solo.html#finishOpenedActivities()

Espresso 如何做到这一点?

最佳答案

错误报告中提供的修复程序的问题是,这只会在整个套件完成时执行。如果你想在每次测试后都有一个干净的 Activity 堆栈,你需要手动做一些事情。我写了一个小类,它的作用与上述故障单上的修复几乎相同,但可以在任何时间点执行。

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();
            }
        }
    }
}

关于安卓 Espresso : Running multiple tests sequentially,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24152192/

相关文章:

android - AndEngine - 上下滚动 Sprite

unit-testing - 流服务中的 Webmethods 模拟

android - 使用 Espresso 和 Spoon 运行特定测试

android - android启动服务时,ui线程是否需要去等待才能启动?

android - 如何使用 url 查询 android 的远程数据库?

android - 我可以在应用程序中使用 .GIF 文件作为主图标吗?

android - 打算在 Android 上打开 Instagram 用户个人资料

unit-testing - go 模板的示例测试因导入和未使用 : "testing" 而失败

testing - 自动检测 500s 和 404s?

android - 如何将 Android SingleLaunchActivityTestCase 转换为 ActivityTestRule? (仪器仪表单元测试)