2012-09-28 4 views
0

버튼을 클릭하면 Android Gallery 애플리케이션이 열리는 애플리케이션이 있습니다. 그런 다음 사용자는 내 애플리케이션의 이미지를 선택할 수 있습니다. JUnit에서 해당 버튼을 클릭하면 Gallery가 열리고 거기에 그냥 앉아 있습니다. 수동으로 사진을 선택해야합니다. 갤러리를 연 다음 다시 돌아가거나 가능한 경우 이미지를 선택할 수 있기를 바랍니다. jUnit의 안드로이드 갤러리에서 돌아 가기?

나는 다음과 같은 몇 가지 옵션 시도 -

sendKeys(KeyEvent.KEYCODE_BACK) 
Robotiums goBack(), goBackToActivity(), sendKey() functions 
Robotiums clickOnScreen() function to click and select an image 

을하지만이 중 어느 것도 제대로 작동하지 않습니다. 그래서 내가 뭘하니?

답변

0

나는 동일한 문제가있었습니다. Android Gallery는 테스트 코드에서 도달 할 수없는 자체 샌드 박스에서 실행되는 다른 애플리케이션이므로이 작업을 수행 할 수 없습니다.

그러나 다음 해결책을 생각해 냈습니다. 이미지를 여는 데 필요한 인 텐트 필터를 제공하는 자체 더미 응용 프로그램을 빌드 할 수 있습니다. 이 응용 프로그램에서는 단순히 ok를 사용하여 의도를 반환합니다.

이제 테스트 응용 프로그램에서 이미지를 처음 열 때 응용 프로그램을 기본 응용 프로그램으로 선택하기 만하면됩니다. 그 후에 모든 것이 자동으로 작동합니다.

테스트가 끝나면 Android 기기 설정에서 기본 인 텐트 필터를 재설정 할 수 있습니다.

내 솔루션의 코드

이 토론에서 찾을 수 있습니다 How to provide content for Intent.ACTION_GET_CONTENT

0

는 응답이 갤러리에서 반환 시뮬레이션 할 수 있습니다. 아래의 코드 스 니펫이 모든 작업을 수행합니다.

final Intent data = new Intent(); 
data.setData(Uri.parse("content://media/external/images/media/458")); // put here URI that you want select in gallery 
Runnable runnable = new Runnable(){ 
    @Override 
    public void run() { 
     getActivity().onActivityResult(3333,-1, data); 
     synchronized(this) { 
      this.notify(); 
     } 
    } 
}; 
synchronized(runnable) { 
    getActivity().runOnUiThread(runnable); 
    runnable.wait(); 
} 

이 방법은 두 가지 단점이 있습니다 활동의

  1. 하여 onActivityResult 방법은 어떤 브레이크 캡슐화 공개해야합니다.
  2. 테스트는 실제로 갤러리를 연 버튼을 클릭하지 않으며 onClick 처리기가 실행되지 않습니다.

그러나 이러한 접근 방식의 이점은 모의 애플리케이션을 빌드하고 Android 설정의 기본값을 변경할 필요가 없다는 것입니다.