运行Android测试用例时显示警告对话框

时间:2013-01-10 07:13:55

标签: android alertdialog robotium

我正在使用Robotium自动测试应用程序。有没有办法在执行特定测试用例时显示警告框。

感谢。

2 个答案:

答案 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或文件中,那么您的测试将更加清晰。

相关问题