3

ActivityInstrumentationTestCase2を使用して、GUI で自動化されたブラック ボックス テストを実行しています。ダイアログをクリックする方法、または単体テストでダイアログに属するビューを取得する方法はありますか?

私が思いついた唯一の方法は、ダイアログへの参照を保持し、Activity に getter メソッドを実装して、テストケースがダイアログにアクセスできるようにすることです。本番コードを変更する必要のない、より良い方法はありますか?

4

1 に答える 1

4

はい、AlertDialogs を自動化コードに公開するより良い方法がありますが、運用コードでそれを行う必要があります。それはあなたの人生をずっと楽にするので、それだけの価値があります。説明させてください。

AlertDialogs を WeakHashMap オブジェクトに割り当てて、非常に簡単に取得できます。これが方法です-

//Definition for WeakHashMap Object
WeakHashMap< Integer, Dialog > managedDialogs = new WeakHashMap< Integer, Dialog  >();

//Some alertdialog builder that needs to be exposed
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(YourActivity.this);
switch(id)
    {
case DIALOG:
    alertDialogBuilder.setTitle("some title")
    .setMessage("some message")
    .setPositiveButton("button text", Onclick activity)         
    .setNeutralButton("button text", Onclick activity)          
    .setNegativeButton("button text", Onclick activity)         
.setCancelable(true);

    AlertDialog dialog = alertDialogBuilder.create();

    //Assigning the value of this dialog to the Managed WeakHashMap
    managedDialogs.put(DIALOG, dialog);
    return dialog;
    }

テストフレームワークで、ダイアログが表示されると予想される場合は、次のようにします-

AlertDialog dialog = (AlertDialog) activity.managedDialogs.get(YourActivity.DIALOG);
于 2010-11-30T23:03:59.843 に答える