我正在使用Robotium自动测试应用程序。有没有办法在执行特定测试用例时显示警告框。
感谢。
答案 0 :(得分:1)
有可能做到,几乎一切皆有可能但在我给你答案之前,你有充分的理由这样做吗?我不能轻易地知道为什么测试应该打开警报框但你可能知道最好。
Robotium有方法。
solo.getCurrentActivity();
使用这个你可以获得一个活动上下文,你可以做任何你可以在Android活动中做的事情。页面http://developer.android.com/guide/topics/ui/dialogs.html告诉我们如何进行对话,您会注意到第一行调用了一个方法来获取currentActivity,而不是我用上面的robotium方法替换它。
// 1. Instantiate an AlertDialog.Builder with its constructor
AlertDialog.Builder builder = new AlertDialog.Builder(solo.getCurrentActivity());
// 2. Chain together various setter methods to set the dialog characteristics
builder.setMessage(R.string.dialog_message)
.setTitle(R.string.dialog_title);
// 3. Get the AlertDialog from create()
AlertDialog dialog = builder.create();
这将创建一个对话框,然后只需调用对话框.show()方法在屏幕上显示它。
答案 1 :(得分:0)
Robotium测试不在UI线程上运行,因此测试方法中的任何代码都将在最佳情况下无法正常工作,在最坏的情况下抛出错误并导致测试失败。
要从测试方法内部与UI交互,您需要在UI线程上运行代码。这可以通过在Runnable中编写代码并将Runnable发送到当前Activity的runOnUiThread()
方法来完成。 Robotium的独奏类具有getCurrentActivity()
方法,允许执行。以下是使用此技术展示Toast的示例。
public void testDisplayToastInActivity() throws Exception
{
Runnable runnable = new Runnable
{
@Override
public void run()
{
Toast.makeText(solo.getCurrentActivity(), "Hello World", Toast.LENGTH_LONG).show();
}
}
solo.getCurrentActivity().runOnUiThread(runnable);
}
如果您想要的不仅仅是Toast,您可以使用runOnUiThread()
执行与您的Activity交互的许多其他操作,例如创建警报对话框。但是,我建议不要这样做,即使你可以。 Robotium和其他测试框架旨在判断应用程序代码执行的正确性,并且不应该像用户那样注入与应用程序交互的任何逻辑或UI修改行为。如果您从测试中获取任何outpu并将其记录到Logcat或文件中,那么您的测试将更加清晰。