그래서 레이블의 값을 설정 한 테스트가 있습니다. 회전 후 라벨이 비어있어 단위 테스트를 만들었습니다. 문제는 레이블이 비어있는 이유를 찾았지만 더 이상 비어 있지 않아도 단위 테스트가 실패한다는 것입니다. 회전 후에 어떤 이유로 ID로 TextView에 액세스 할 수 없게되면 null을 반환합니다.안드로이드 유닛 테스트에서 회전을 찾지 못했습니다.
@MediumTest
public void testThatLabelsRestoredAfterSwitchingToLandscape(){
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
getInstrumentation().waitForIdleSync();
assertThat(textFor(R.id.location), is("Los Angeles"));
}
textFor 방법은 단지 널 (null) 검사를 수행하지만 여기있다 :
private String textFor(int id) {
TextView text = (TextView) getActivity().findViewById(id);
return text != null && text.getText() != null ? text.getText().toString() : null;
}
텍스트가 null입니다.
놀라운 것은 아닙니다 : 장치가 가로 모드에 있으면 테스트가 통과됩니다.
또한 회전 후에 테스트에 절전 모드를 삽입 했으므로 대상 값으로 컨트롤을 볼 수 있습니다.
세로 및 가로 레이아웃 리소스 파일이 다를 수 있으며 전환하려는 방향으로 R.id.location이 누락되었을 수 있습니다. 어쩌면 그것을 확인할 수 있을까요? –
아니요, 그들은 동일합니다. 좋아, 그래서 문제를 발견 : 활동이 파괴되고있다 !! 따라서 회전 후 다른 활동입니다. 이것을 알아 내려고 노력 중입니다. 분명히 Robotium 녀석들은 이미 그것을 알아 냈고, 그들의 버전에서 작동하기 때문에 샌드페이퍼를 만들었습니다. – Rob