我是robolectric的新手,我正在尝试对创建AlertDialog的按钮进行测试.单击该按钮时,将使用正面按钮创建一个AlertDialog,我想使用Robolectric单击该按钮,并测试它是否启动了一个活动.这是按钮的代码:
newUserbutton.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { AlertDialog.Builder builder = new AlertDialog.Builder(StartActivity.this); builder.setTitle(context.getResources().getString(R.string.start_Title_message)) .setMessage(getResources().getString(R.string.start_dialog_message)); builder.setPositivebutton(getString(R.string.start_confirm_message), new DialogInterface.OnClickListener() { public voID onClick(DialogInterface dialog, int ID) { startActivityForResult(new Intent(StartActivity.this, AvatarRoomActivity.class), 0); } }); builder.setNegativebutton("Cancel", new DialogInterface.OnClickListener() { public voID onClick(DialogInterface dialog, int ID) { dialog.dismiss(); } }); AlertDialog dialog = builder.create(); colorDrawable drawable = new colorDrawable(color.WHITE); drawable.setAlpha(200); dialog.getwindow().setBackgroundDrawable(drawable); dialog.show(); } });
有谁知道如何测试点击肯定按钮,然后启动AvatarRoomActivity?提前致谢,希望很快能收到某人的来信.
解决方法:
让我们暂时忘记newUserbutton.它与问题无关.
您需要公开AlertDialog对象,以便可以在单元测试代码中访问它.所以我假设你的活动在StartActivity中有这样的方法:
AlertDialog showDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(StartActivity.this); builder.setTitle("This is Title") .setMessage("Dialog Message"); builder.setPositivebutton("Confirm", new DialogInterface.OnClickListener() { public voID onClick(DialogInterface dialog, int ID) { startActivityForResult(new Intent(this, AvatarRoomActivity.class), 0); } }); builder.setNegativebutton("Cancel", new DialogInterface.OnClickListener() { public voID onClick(DialogInterface dialog, int ID) { dialog.dismiss(); } }); AlertDialog dialog = builder.create(); dialog.show(); return dialog;}
然后newUserbutton的click事件只是调用此方法.
然后我们有这样的测试用例:
@Testpublic voID testLaunchAvatarRoomWhenConfirm() { StartActivity startActivity = Robolectric.buildActivity(StartActivity.class).create().get(); AlertDialog dialog = startActivity.showDialog(); // Key part 1 : simulate button click in unit test button confirm = dialog.getbutton(Dialog.button_POSITIVE); confirm.performClick(); // Key part 2 : Check that startActivityForResult is invoke ShadowActivity shadowActivity = shadowOf(startActivity); ShadowActivity.IntentForResult intentForResult = shadowActivity.getNextStartedActivityForResult(); // assert that the proper request to start activity is sent Componentname nextActivity = intentForResult.intent.getComponent(); assertEquals(".AvatarRoomActivity", nextActivity.getShortClassname());}
此测试方法验证当单击对话框的正按钮时,将使用适当的活动类名调用startActivityForResult.
所以剩下的问题是我们如何确保活动真正得到解决和启动.通常我会在此时停止测试警报对话框 *** 作.是否可以解决意图并启动活动属性超出了此特定测试用例的范围.
总结以上是内存溢出为你收集整理的android – 如何为AlertDialog进行Robolectric测试全部内容,希望文章能够帮你解决android – 如何为AlertDialog进行Robolectric测试所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)