0

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);
    }       
}
4

1 に答える 1

0

少しリファクタリングするだけで、BoundBoxを使用してアクティビティの非公開状態にアクセスできます。

たとえば、すべてのコードをアクティビティのプライベート メソッド内のリスナー内に配置し、モック コンテキストを使用してそれらをテストして、インテントが正しく受信されるかどうかを確認します。

于 2013-09-17T09:10:58.387 に答える