2012-11-12 2 views
7

내 방법입니다, 그것은 잘 작동하고 대화 상자를 보여줍니다.Android 테스팅 : 대화 상자. 그것을 확인 isShowing()

public void showDialog(){ 
    final Dialog dialog = new Dialog(this); 
    dialog.setContentView(R.layout.mylayout); 
    dialog.show(); 
} 

테스트 프로젝트가 있는데 대화 상자가 표시되는지 테스트하고 싶습니다. .isShowing() 메서드를 적용하고 싶습니다. 이게 뭔가 ...

assertTrue(dialog.isShowing()); 

하지만 내 테스트 내에서 대화 상자 변수를 얻는 방법을 모르겠습니다.

저는 Robotium을 사용하지 않습니다 (이것은 나에게 옵션이 아닙니다). 현재 ActivityUnitTestCase를 사용하여 테스트하고 있습니다. 더 자세한 정보가 필요하면 언제든지 물어보십시오. 내가

public Dialog getDiag(){ 
    return dialog; 
} 

이 답변을 사용하여 대화 상자가 공공하여 아래의 답을 사용하려고했습니다

편집 : 내가 시험에서() ShowDialog를 실행할 때 나는 새로운 문제가 그것은 히트 할 때 깨집니다 : dialog.show();

android.view.WindowManager $ BadTokenException는 : - 토큰 널 (null)

답변

5

ShowDialog를 기능 이외의 대화를 선언 한 다음이 대화 인스턴스를 반환하는 방법을 구현 * 수 없습니다 창을 추가 할 수 있습니다.

public Dialog getDiag(){ 
    return dialog; 
} 

후 나는 다음 적어도 내 테스트에서 대화에 액세스 할 수 있습니다,이

assertTrue(new YourClassName().getDialog().isShowing()); 
+0

같은 내가 대화를 반환하는 내 방법을 변경 한 감사 않습니다. 그러나 Dialog.show()를 호출 할 수 없으므로이를 내 메서드에서 가져 와서 대화 상자가 반환 된 후() 활동에서 show()를 호출합니다. –