3

내 GUI에서 자동화 된 블랙 박스 테스트를 수행하기 위해 ActivityInstrumentationTestCase2을 사용하고 있습니다. 대화 상자를 클릭하거나 단위 테스트에서 대화 상자에 속한보기를 가져 오는 방법이 있습니까?AndroidTestCase에서 AlertDialog에 액세스하기

내가 말할 수있는 유일한 방법은 대화 상자에 대한 참조를 유지하고 내 액티비티에 테스트 메소드가 대화 상자에 액세스 할 수 있도록 getter 메소드를 구현하는 것입니다. 생산 코드를 변경하지 않아도되는 더 좋은 방법이 있습니까?

답변

4

예, AlertDialogs를 자동화 코드에 표시하는 더 좋은 방법이 있지만 프로덕션 코드에서 AlertDialog를 사용해야합니다. 그것은 당신의 인생을 훨씬 쉽게 만들 것이기 ​​때문에 그것은 가치가있을 것입니다. 설명하겠습니다.

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); 
관련 문제