Flu*_*ery 11 testing android android-testing android-espresso
我正在尝试使用Espresso for Android进行一系列测试.看来,在运行之间,活动不会被关闭.无论一次测试后的应用程序状态如何,它都会进行下一次测试.
我需要从一个全新的应用程序开始运行我的每个测试.在Robotium中,这是使用tearDown()方法中的solo.finishOpenedActivites()来处理的.
http://robotium.googlecode.com/svn/doc/com/robotium/solo/Solo.html#finishOpenedActivities()
如何用Espresso完成这项工作?
小智 9
错误报告中提供的修复程序的问题是,这只会在完成整个套件时执行.如果您希望在每次测试后都有一个干净的活动堆栈,则需要手动执行某些操作.我写了一个小类,与上面提到的票证上的修复程序非常相似,但可以在任何时间点执行.
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();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
GoogleInstrumentation 实际上尝试完成所有打开的活动,但由于一个愚蠢的错误而未能正确完成:https://code.google.com/p/android-test-kit/issues/detail ?id=66
该问题中链接的补丁解决了这个问题。
| 归档时间: |
|
| 查看次数: |
6457 次 |
| 最近记录: |