为什么从测试类调用时不显示对话框?

时间:2015-03-18 05:17:40

标签: android testing dialog

我的课程中有一个方法,我想测试哪个显示警告对话框。 当我从测试类调用此方法时,它会被执行但是对话框没有显示? 当我调用一个显示一些toast或其他弹出对话框的方法时,会发生同样的情况 我的测试类扩展了ActivityInstrumentationTestCase2。

public void showSaveName(String name){
        new AlertDialog.Builder(this)
        .setIcon(android.R.drawable.ic_menu_save)
        .setTitle(R.string.savePopupLabel)
        .setMessage(R.string.savePopupMessage)
        .setPositiveButton(R.string.save_yes, new alter(name))
        .setNegativeButton(R.string.save_no, null)
        .show();
    }

当我从我的测试类中调用它时

getActivity().showSaveName(name);

对话框未显示? 任何人都可以帮我弄清楚它为什么会发生?或者如果我做错了什么?

2 个答案:

答案 0 :(得分:0)

这是正常的。 您的测试类不是要在设备上显示任何内容。您应该以编程方式确保对话框出现。

在测试类中,一旦显示对话框,请保留Dialg框的实例,然后执行

assertTrue(yourDialogInstance.isShown());

如果您的对话框没有出现,那么您的测试将失败。

应该这样做。

答案 1 :(得分:0)

你可以尝试:

public void showSaveName(String name) {
    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder.setIcon(android.R.drawable.ic_menu_save)
        .setTitle(R.string.savePopupLabel)
        .setMessage(R.string.savePopupMessage)
        .setPositiveButton(R.string.save_yes, new alter(name))
        .setNegativeButton(R.string.save_no, null);
    AlertDialog dialog = builder.create();
    dialog.show();
}