Android测试用例活动测试

Android测试用例活动测试,android,jakarta-ee,android-testing,Android,Jakarta Ee,Android Testing,我有一个与ListView和CustomCursorAdapter的活动,现在我希望自动化测试。一切正常,但当适配器中没有记录时,屏幕上会显示一个警报对话框。问题是我无法访问活动测试(android测试用例)上的警报对话框,也无法处理测试框架上的警报对话框事件,先生,请在这方面帮助我。提前谢谢 对话框创建代码。 @Override protected Dialog onCreateDialog(int id){ String msg = null; switch(id){

我有一个与ListView和CustomCursorAdapter的活动,现在我希望自动化测试。一切正常,但当适配器中没有记录时,屏幕上会显示一个警报对话框。问题是我无法访问活动测试(android测试用例)上的警报对话框,也无法处理测试框架上的警报对话框事件,先生,请在这方面帮助我。提前谢谢

对话框创建代码。

@Override
protected Dialog onCreateDialog(int id){

    String msg = null;
    switch(id){
    case CALL_SETTING:
        builder =  new AlertDialog.Builder(this);
        builder.setTitle("CIH - HELP");         
        msg = "Please Allow me to guide you Configure this fresh CIH-MA.";                  
        builder.setMessage(msg);
        builder.setCancelable(true);
        builder.setPositiveButton("OK", new settingOnClickListener());
        builder.setNegativeButton("Cancel", new cancelOnClickListener());
        alDialog = builder.create();
        alDialog.show();
        break;
    case CALL_SITE:
        builder =  new AlertDialog.Builder(this);
        builder.setTitle("CIH - HELP");
        msg = "Please press 'Site' button to Add new Site for Monitoring and Controling Device ";
        builder.setMessage(msg);
        builder.setCancelable(true);
        builder.setPositiveButton("OK", new siteOnClickListener());
        builder.setNegativeButton("Cancel", new cancelOnClickListener());
        alDialog = builder.create();
        alDialog.show();
        break;
    }
    return super.onCreateDialog(id);

}
private final class settingOnClickListener implements DialogInterface.OnClickListener{

    @Override
    public void onClick(DialogInterface dialog, int which) {
        // TODO Auto-generated method stub
        ZigbeeActivity.this.startActivity(new Intent(ZigbeeActivity.this,AboutScreen.class));           
    }       
}
private final class cancelOnClickListener implements DialogInterface.OnClickListener{
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // TODO Auto-generated method stub

    }       
}
private final class siteOnClickListener implements DialogInterface.OnClickListener{

    @Override
    public void onClick(DialogInterface dialog, int which) {
        // TODO Auto-generated method stub
        Intent LocationIntent = new Intent(ZigbeeActivity.this,SelectLocation.class);
        LocationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP);
        ZigbeeActivity.this.startActivity(LocationIntent);
    }       
}

通过一点重构,您可以使用它来访问活动的私有状态


例如,将监听器中的所有代码放在活动的私有方法中,并使用模拟上下文对它们进行测试,以查看意图是否正确接收。

change AlertDialog.Builder(this);到AlertDialog.Builder(Activity.this);实际上,这个AlertDialog.Builder代码是在测试活动中编写的,通过JUnit我是如何处理AlertDialog事件的