Android Espresso:依次运行多个测试

前端之家收集整理的这篇文章主要介绍了Android Espresso:依次运行多个测试前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用Espresso for Android进行一系列测试.运行之间似乎没有关闭活动.一次测试后,无论应用程序状态如何,左侧为下一次测试.

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

如何用Espresso来实现?

解决方法

错误报告中提供的修复程序的问题是,这将仅在整个套件的完成时执行.如果你想在每次测试后都有一个干净的活动堆栈,你需要手动做一些事情.我写了一个类似于上面提到的机票的修复程序,但可以在任何时间点执行.
  1. import android.app.Activity;
  2. import android.os.Handler;
  3. import android.os.Looper;
  4. import com.google.android.apps.common.testing.testrunner.ActivityLifecycleMonitor;
  5. import com.google.android.apps.common.testing.testrunner.ActivityLifecycleMonitorRegistry;
  6. import com.google.android.apps.common.testing.testrunner.Stage;
  7. import java.util.ArrayList;
  8. import java.util.EnumSet;
  9. import java.util.List;
  10.  
  11.  
  12. public final class ActivityFinisher implements Runnable {
  13.  
  14. public static void finishOpenActivities() {
  15. new Handler(Looper.getMainLooper()).post(new ActivityFinisher());
  16. }
  17.  
  18. private ActivityLifecycleMonitor activityLifecycleMonitor;
  19.  
  20. public ActivityFinisher() {
  21. this.activityLifecycleMonitor = ActivityLifecycleMonitorRegistry.getInstance();
  22. }
  23.  
  24. @Override
  25. public void run() {
  26. final List<Activity> activities = new ArrayList<Activity>();
  27.  
  28. for (final Stage stage : EnumSet.range(Stage.CREATED,Stage.STOPPED)) {
  29. activities.addAll(activityLifecycleMonitor.getActivitiesInStage(stage));
  30. }
  31.  
  32. for (final Activity activity : activities) {
  33. if (!activity.isFinishing()) {
  34. activity.finish();
  35. }
  36. }
  37. }
  38. }

猜你在找的Android相关文章