Основы тестирования и отладки приложений на смартфоне
Добавим тест начальных условий
Этот тест проверяет, что тестируемое приложение инициализировано корректно. Метод будет проверять следующее:
- инициализирован слушатель события выбора элемента из списка, этот слушатель вызывается когда в спинере выбирается какой-то элемент;
- инициализирован адаптер, предоставляющий значения для спинера;
- адаптер содержит правильное количество записей.
Код метода:
public void testPreConditions() { assertTrue(mSpinner.getOnItemSelectedListener() != null); assertTrue(mPlanetData != null); assertEquals(mPlanetData.getCount(),ADAPTER_COUNT); }
В класс тестов необходимо добавить элемент:
public static final int ADAPTER_COUNT = 9;
Добавим тест интерфейса пользователя
Создадим UI тест, который выбирает элементы из виджета спинер. Тест посылает события нажатия клавиш и проверяет, что выбор соответствует ожидаемым результатам.
Для работы со спинером тест должен запросить фокус и затем установить его в известную позицию, для этого используются методы requestFocus() и setSelection(). Оба эти метода взаимодействуют с представлениями тестируемого приложения, поэтому должны вызываться специальным образом.
Код для получения фокуса и установки выделения выглядит следующим образом:
mActivity.runOnUiThread( new Runnable() { public void run() { mSpinner.requestFocus(); mSpinner.setSelection(INITIAL_POSITION); } } );
Необходимо добавить его в метод:
public void testSpinnerUI() { … }
Необходимо добавить в класс тестов элемент:
public static final int INITIAL_POSITION = 0;
Далее необходимо сделать выбор элемента спинера для этого передадим событие нажатия кнопки в спинер:
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER); for (int i = 1; i <= TEST_POSITION; i++) { this.sendKeys(KeyEvent.KEYCODE_DPAD_DOWN); } this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
Необходимо добавить в класс тестов элемент:
public static final int TEST_POSITION = 5;
Необходимо импортировать:
import android.view.KeyEvent;
Проверка результатов. Запросить текущее состояние спинера и сравнить его с ожидаемым значением. Вызов метода getSelectedItemPosition() позволит получить текущую выбранную позицию, а метод getItemAtPosition() возвращает элемент, соответствующий этой позиции (представленный в виде строки). Метод assertEquals(); проверяет совпадает ли полученное значение с ожидаемым "Saturn".
Добавьте в метод public void testSpinnerUI() следующий код:
mPos = mSpinner.getSelectedItemPosition(); mSelection = (String)mSpinner.getItemAtPosition(mPos); TextView resultView = (TextView)mActivity.findViewById (com.android.example.spinner.R.id.SpinnerResult); String resultText = (String) resultView.getText(); assertEquals(resultText,mSelection);
Необходимо добавить в класс тестов следующие элементы:
private String mSelection;
private int mPos;
И импортировать:
import android.widget.TextView;