2011-05-10 6 views
3

다음 시나리오를 테스트하고 자동 완성 텍스트 뷰에 문자를 입력하고 아래로 스크롤하여 옵션 중 하나를 선택한 다음 버튼을 클릭하면 버튼이 새로운 활동을 시작합니다. 새로운 활동이 시작되었는지 아닌지 확인하고 싶습니다. 이것은 테스트 방법입니다.Android - 다른 활동이 시작된 경우 테스트하기

public void testSpinnerUI() { 

    mActivity.runOnUiThread(new Runnable() { 
     public void run() { 

      mFromLocation.requestFocusFromTouch(); // use reqestFocusFromTouch() and not requestFocus() 
     } 
    }); 
    //set a busstop that has W in it, and scroll to the 4th position of the list - In this case Welcome 
    this.sendKeys(KeyEvent.KEYCODE_W); 
    try { 
     Thread.sleep(2000); //wait for 2 seconds so that the autocomplete loads 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 
    for (int i = 1; i <= 4; i++) { 
     this.sendKeys(KeyEvent.KEYCODE_DPAD_DOWN); 
    } 

    this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER); 

    assertEquals("Welcome", mFromLocation.getText().toString()); 

    //hit down arrow twice and centre button 

    this.sendKeys(KeyEvent.KEYCODE_DPAD_DOWN); 
    this.sendKeys(KeyEvent.KEYCODE_DPAD_DOWN); 

    this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER); 

    assertEquals(com.myApp.RouteListActivity.class, getActivity()); 

} 

시험 마지막 assertEquals에서 실패 (com.myApp.RouteListActivity.class, getActivity()). 새로운 활동이 시작되었는지 여부를 테스트하는 방법에 대해 안내해 주시겠습니까?

답변

3

사용하는 데 필요한 ActivityManager로 편리하게 여기 입증 : https://stackoverflow.com/questions/3908029/android-get-icons-of-running-activities

짧은 요약 :

ActivityManager am = (ActivityManager) getSystemService(Service.ACTIVITY_SERVICE); 
List<ActivityManager.RecentTaskInfo> processes = am.getRecentTasks(5); 

는 당신에게 모든 실행중인 프로세스의 목록을 가져옵니다 (당신은 GET_TASKS 권한이 필요합니다). 해당 목록을 통해 활동을 검색 할 수 있습니다. 작업 중 하나에는 활동과 동일한 이름의 origActivity 속성이 있어야합니다.

+1

안녕하세요, 저는 이것을 시험해보고 테스트 프로젝트에 GET_TASKS 권한을주었습니다. 그러나 권한이 없다는 예외가 있습니다. 만약 내가 실제 애플 리케이션에 권한을 이동하면 작동하는지 테스트하고있다. 그러나 그것은 이상적이지 않습니다. 앱이 테스트에 필요한 권한을 필요로해서는 안됩니다. 이게 정상인가? 내가 뭔가 잘못하고 있는거야? – Kurt

관련 문제