Android 如何在Robotium中检查应用程序是否已完成?
我正在尝试使用Robotium创建一个测试方法,以检查Android应用程序在单击按钮后是否完成(在代码中,当用户点击按钮时,会调用Android 如何在Robotium中检查应用程序是否已完成?,android,testing,robotium,android-lifecycle,Android,Testing,Robotium,Android Lifecycle,我正在尝试使用Robotium创建一个测试方法,以检查Android应用程序在单击按钮后是否完成(在代码中,当用户点击按钮时,会调用finish()) 但这项测试失败了。我不知道如何指示测试等待活动完成。另外,我不确定使用getCurrentActivity()是否是检查应用程序是否已完成的好方法 如何检查应用程序/活动是否已完成 谢谢。应用程序和检测正在同一进程中运行,如果您完成了应用程序,您将无法在检测中执行更多操作。它失败了,因为仪器也被杀死了,而您试图做更多的事情。没有办法检查您想用ro
finish()
)
但这项测试失败了。我不知道如何指示测试等待活动完成。另外,我不确定使用getCurrentActivity()
是否是检查应用程序是否已完成的好方法
如何检查应用程序/活动是否已完成
谢谢。应用程序和检测正在同一进程中运行,如果您完成了应用程序,您将无法在检测中执行更多操作。它失败了,因为仪器也被杀死了,而您试图做更多的事情。没有办法检查您想用robotium做什么。如果这是您的主要活动,请使用以下方法:
assertTrue(solo.getCurrentActivity().isFinishing());
这个问题由来已久,但也许我的解决方案可以帮助别人 我找到了一种在使用Robotium时等待/检测活动是否完成的方法
- 创建一个条件来检测活动根视图何时从窗口分离:(我在示例中使用了一个helper方法)
- 等待测试中的条件:
solo.clickOnView(solo.getView(R.id.exitButton)); Assert.assertTrue("should finish activity", solo.waitForCondition(activityWillClose(solo.getCurrentActivity()), 2000) );
public static Condition activityWillClose(final Activity activity) {
return new Condition() {
boolean _detached = false;
{ // constructor
View rootView = activity.getWindow().getDecorView().findViewById(android.R.id.content);
rootView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
@Override
public void onViewAttachedToWindow(View view) {
}
@Override
public void onViewDetachedFromWindow(View view) {
_detached = true;
}
});
}
@Override
public boolean isSatisfied() {
return _detached;
}
};
}
solo.clickOnView(solo.getView(R.id.exitButton));
Assert.assertTrue("should finish activity",
solo.waitForCondition(activityWillClose(solo.getCurrentActivity()), 2000)
);