如何在Robotium中检查应用程序是否已完成?
我想创建一个测试方法,使用Robotium来检查Android应用程序是否点击按钮后完成(代码中有用户点击它时调用finish()
)。如何在Robotium中检查应用程序是否已完成?
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()
是检查应用程序是否完成的好方法。
如何检查应用程序/活动是否已完成?
谢谢。
应用程序和工具在同一个进程中运行,如果你完成你的应用程序,你不能在仪器上做更多的事情。它失败了,因为仪表也被杀死了,你试图做更多的事情。没有办法检查你想用robotium做什么。
如果它是你的主要活动中使用这样的:
assertTrue(solo.getCurrentActivity().isFinishing());
1.断言主要是在开发和维护过程中使用的,所以这个检查可能会被编译出来用于生产代码,并且没有效果,2.这个检查不足以等待活动完成或检查它是否已经存在完成 – Mobiletainment 2013-11-04 15:00:21
我不明白那个评论。 assertTrue在测试代码中,不是吗? – koljaTM 2014-01-21 07:49:09
是的assertTrue在测试代码 – Drakkin 2014-09-12 08:06:57
这个问题是旧的,但也许我的解决方案可以帮助别人。
我找到了一种方法来等待/检测使用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) );
你是什么意思完成?!没有活动在运行?没有服务运行?没有进程运行?通常,退出按钮不是Android中的事情,您为什么要退出某些内容?如果需要的话,只要将它关闭,OS就会关闭它,并且假设您在重新打开时已经正确编程并保存了状态,它将会弹开。 – 2013-03-15 09:09:24