我正在尝试使用Robotium创建一个测试方法来检查Android应用程序是否在单击按钮后完成(在代码中,当用户点击它时,会调用finish()
)。
public void test_onclickExit_finish() {
String buttonText = resources.getString(R.string.exit);
Button exitButton = solo.getButton(buttonText, true);
solo.clickOnView(exitButton);
// check here that the app has finished
// wait for the activity to finish?
assertTrue(solo.getCurrentActivity() == null);
}
但是这个测试失败了。我不知道如何指示测试等待活动结束。此外,我不确定使用getCurrentActivity()
是否是检查应用程序是否已完成的好方法。
如何检查应用程序/活动是否已完成?
感谢。
答案 0 :(得分:4)
如果是您的主要活动,请使用:
assertTrue(solo.getCurrentActivity().isFinishing());
答案 1 :(得分:3)
这个问题很老,但也许我的解决方案可以帮助某人。
我找到了一种在使用Robotium时等待/检测活动是否完成的方法。
创建一个条件来检测活动根视图何时从窗口中分离:(我在我的示例中使用了一个帮助方法)
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)
);
答案 2 :(得分:2)
应用程序和工具在同一个过程中运行,如果您完成了应用程序,则无法在仪器中执行任何操作。它失败了,因为仪器也被杀了,你试图做更多的事情。没有办法检查你想用robotium做什么。