ListView
및 TextView
이 포함 된 간단한 Activity
을 작성했습니다. ListView
항목을 선택하면 TextView
에 항목 텍스트가 반영됩니다. 회전 변경을 처리하기위한 코드를 추가하지 않았습니다. 나는 응용 프로그램을 실행하면, 내가 기대 무엇을 얻을 :테스트 케이스에 오래된 TextView 값이 표시됨 : Android의 방향 변경 테스트
- 클릭 된 항목은 그러나
TextView
- 포스트 회전,
TextView
의 기본 값이 표시됩니다
에 표시됩니다, 내 테스트를 실행 한 후 (ActivityInstrumentationTestCase2
연장)이 발생하는 것입니다 : 클릭 항목의
- 값은 제대로 내 시험에 기록
- 포스트 회전, 테스트는
TextView
의 예전 값을 얻을 수 여기
내 시험이다 (I 텍스트 내 장치에서 변경된 것을 볼 수 있지만를!) : 일부 SO에
@Override
protected void setUp() throws Exception {
super.setUp();
mActivity=(MainActivity) getActivity();
lv=(ListView) mActivity.findViewById(com.example.samplee.R.id.lv1);
}
public void testDestroy() {
mActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
lv.requestFocus();
lv.setSelection(0);
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_DOWN);
this.sendKeys(KeyEvent.KEYCODE_DPAD_DOWN);
//select 2nd item in ListView
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
TextView tv=(TextView)mActivity.findViewById(com.example.samplee.R.id.textView1);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
String origValue=(String) tv.getText();
mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
tv=(TextView)mActivity.findViewById(com.example.samplee.R.id.textView1);
String newValue=(String) tv.getText(); //gets same value as origValue!
assertEquals(origValue,newValue); //always succeds;
}
게시물, 내 Thread.sleep()
코드 대신 getInstrumentation().waitForIdleSync()
을 사용하는 방법에 대해 읽었습니다. 그것도 작동하지 않았습니다.
로보 티움도 사용해 보았습니다. 변경 없음! 이 문제를 해결하는 방법에 대한 지침이 있습니까?
완벽! 'Solo'와'getCurrentActivity()'를 사용해야했습니다. 'ActivityInstrumentationTestCase2'를 통해이를 해결할 수 없습니다. –