Я наблюдаю необычное поведение в своем тестовом примере Android JUnit. Тестовый пример предназначен для тестирования управления состоянием активности простого приложения-калькулятора. Вот что должен делать мой тестовый пример.
- Запуск активности (сделано в настройках)
- Получить ссылку на элементы пользовательского интерфейса (сделано в настройках)
- Нажимайте кнопки, чтобы написать что-нибудь в TextView
- Измените ориентацию действия, чтобы оно было воссоздано, а текст TextView был очищен.
- Убедитесь, что текстовое представление чистое
Пока я вижу на эмуляторе, что на шаге 5 TextView активности показывает пустое текстовое поле, но в тестовом коде Junit, когда я делаю TextView.getText(), он возвращает старое значение, которое было введено до изменения ориентации.
Вот мой код тестового примера. Последнее утверждение должно завершиться ошибкой, поскольку Activity воссоздается, и я не управляю состоянием Activity с помощью onSaveInstanceState()/onRestoreInstanceState()
public void testOrientationState(){
mActivity.runOnUiThread(new Runnable(){
@Override
public void run() {
keypad.get(com.example.simplecalculator.R.id.button7).performClick();
keypad.get(com.example.simplecalculator.R.id.button9).performClick();
}
});
CharSequence beforeOrientationChange = display.getText();
assertEquals(beforeOrientationChange,"79");
mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
getInstrumentation().waitForIdleSync();
CharSequence afterOrientationChange= (CharSequence) ((TextView)mActivity.findViewById(com.example.simplecalculator.R.id.textView)).getText();
assertEquals(beforeOrientationChange,afterOrientationChange);
}