Платформа тестирования Android JUnit

Я наблюдаю необычное поведение в своем тестовом примере Android JUnit. Тестовый пример предназначен для тестирования управления состоянием активности простого приложения-калькулятора. Вот что должен делать мой тестовый пример.

  1. Запуск активности (сделано в настройках)
  2. Получить ссылку на элементы пользовательского интерфейса (сделано в настройках)
  3. Нажимайте кнопки, чтобы написать что-нибудь в TextView
  4. Измените ориентацию действия, чтобы оно было воссоздано, а текст TextView был очищен.
  5. Убедитесь, что текстовое представление чистое

Пока я вижу на эмуляторе, что на шаге 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);
}

person Hakeem    schedule 05.08.2013    source источник


Ответы (1)


Android может завершить Activity и перезапустить его после изменения ориентации. Поэтому вам не следует полагаться на существующую ссылку Activity, если вы хотите проверить состояние после изменения ориентации.

person Rajesh    schedule 05.08.2013