Разделы портала

Онлайн-тренинги

.
Настройка среды для разработки Android приложений и автоматизации на Robotium
04.06.2012 13:16

Автор: Андрей Дзыня

Совсем недавно прошел курс по автоматизации мобильных приложений. Чтобы немного помочь тем, кто не может принять участие в тренингах, я решил сделать небольшую вводную по работе с автоматизацией на Android. Начнем с установки нужных средств и написания простого теста.

Что нам для этого понадобится.

А теперь обо всем, по-порядку. Выполняйте действия в описаной последовательности и все получится! Но если что пошло не так - пишите комментарии к статье, будем разбираться.

 

1. Установка Java

Как проверить установлена ли нужная версия java? Открываем консоль и пишем

java -version

Должны получить что-то вроде

java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
Java HotSpot(TM) Client VM (build 20.4-b02, mixed mode, sharing)

Если же получаем

 

"java" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом
тогда нужно скачать дистрибутив и установить со стандартной конфигурацией.

2. Установка Eclipse IDE

Скачиваем с официального сайта. Распаковываем в удобную директорию. Я устанавливаю в папку tools, где у меня находятся все инструменты касательно разработки (некоторые инструменты могут нестабильно работать из-за пробела в пути “Program Files”). Запускаем Eclipse


 

3.Установка Android SDK

Заходим на официальный портал для разработчиков Android. Скачиваем Android SDK и устанавливаем в удобную директорию.

После установки добавляем пути d:\tools\android\android-sdk\tools;d:\tools\android\android-sdk\platform-tools в системную переменную PATH

4. Установка нужных платформ

Открываем ADB Manager и устанавливаем все платформы. Установка может занять несколько часов, зависимо от вашего канала связи.

 

5. Устанавливаем плагин для Eclipse

Для этого, на главном меню Eclipse, выбираем Help -> Install new software

Нажимаем Add и добавляем путь к репозиторию для установки

https://dl-ssl.google.com/android/eclipse/

Устанавливаем Developer Tools

Перезапускаем среду разработки, чтобы продолжить.

Указываем путь к Android SDK в Eclipse IDE. Для этого нажимаем Windows -> Preferences

 

5. Подготовка тестируемого приложения

За основу возьмем  семпловое приложение из директории семплов Android SDK. Например Notepad.

Для начала создадим проект в EclipseFile -> New -> Android Project

Указываем имя и выбираем Create project from existing sample

 

Выбираем API, например 7. На следующем окне выбираем приложение NotePad и нажимаем Finish.

Получаем созданный проект. Давайте запустим сборку приложения и проверим его функционал.

Должны получить следующее сообщение в консоли.

[2012-01-15 11:30:11 - Notepad] Android Launch!
[2012-01-15 11:30:11 - Notepad] adb is running normally.
[2012-01-15 11:30:11 - Notepad] Performing com.example.android.notepad.NotesList activity launch
[2012-01-15 11:30:11 - Notepad] Automatic Target Mode: launching new emulator with compatible AVD 'Default'
[2012-01-15 11:30:11 - Notepad] Launching a new emulator with Virtual Device 'Default'

Ждем пока запустится эмулятор.

Это может занять от 1 минуты и иногда до 10ти. Эмулятор самое узкое место в написании программ под Android. В дальнейшем мы поговорим, какие есть альтернативы.

После запуска получаем наше приложение и можем ознакомиться с его функциональными возможностями.

6. Создаем тестовый проект

Создаем тестовый проект, используя проект существующего приложения. Для этого нажимаем правой клавишей мыши на проекте и выбираем Android Tools -> New Test Project

Получили еще один проект, но уже в нем будут храниться наши тесты.

7. Подключаем библиотеку Robotium

Загружаем Robotium jar файл в удобную директорию. Последняя версия, на момент написания статьи, robotium-solo-3.1.jar.

Подключаем библиотеку к тестовому проекту. Правый клик мышкой на тестовом проекте -> Build Path -> Configure Build Path -> Add External JARs...

 

Все готово для начала автоматизации!

8. Пишем тесты

Создаем первый  тестовый класс в пакете com.example.android.notepad.test. С вот таким содержимым

package com.example.android.notepad.test;

import android.test.ActivityInstrumentationTestCase2;
import com.example.android.notepad.NotesList;
import com.jayway.android.robotium.solo.Solo;
/**
* Add note test
* Example of simple Robotium test
*
* @author adzynia
*
*/
public class AddNoteTest extends ActivityInstrumentationTestCase2<NotesList>{
private static final String APP_PACKAGE_NAME = "com.example.android.notepad";
protected Solo solo;
public AddNoteTest() {
super(APP_PACKAGE_NAME, NotesList.class);
}
public void setUp() throws Exception {
solo = new Solo(getInstrumentation(), getActivity());
}
public void testAddNote() throws Exception {
solo.clickOnMenuItem("Add note");
//Assert that NoteEditor activity is opened
solo.assertCurrentActivity("Expected NoteEditor activity", "NoteEditor");
//In text field 0, add TestNote
String note = "TestNote";
solo.enterText(0, note);
solo.goBack();
//Assert that TestNote is found
assertTrue("Note 1 is not found", solo.searchText(note));
}
@Override
public void tearDown() throws Exception {
//Robotium will finish all the activities that have been opened
solo.finishOpenedActivities();
}
}

Самый простой тест на добавление новой заметки. Запускаем тест и проверяем результаты.

Скачать видео

Много времени уходит на запуск эмулятора. Вы можете попробовать запускать тесты на своем Android телефоне, а так же создавать тесты без привязки к проекту приложения. Но об этом позже.

Полезные ссылки:

package com.example.android.notepad.test;
import android.test.ActivityInstrumentationTestCase2;
import com.example.android.notepad.NotesList;
import com.jayway.android.robotium.solo.Solo;
/**
* Add note test
* Example of simple Robotium test
*
* @author adzynia
*
*/
public class AddNoteTest extends ActivityInstrumentationTestCase2<NotesList>{
private static final String APP_PACKAGE_NAME = "com.example.android.notepad";
protected Solo solo;
public AddNoteTest() {
super(APP_PACKAGE_NAME, NotesList.class);
}
public void setUp() throws Exception {
solo = new Solo(getInstrumentation(), getActivity());
}
public void testAddNote() throws Exception {
solo.clickOnMenuItem("Add note");
//Assert that NoteEditor activity is opened
solo.assertCurrentActivity("Expected NoteEditor activity", "NoteEditor");
//In text field 0, add TestNote
String note = "TestNote";
solo.enterText(0, note);
solo.goBack();
//Assert that TestNote is found
assertTrue("Note 1 is not found", solo.searchText(note));
}
@Override
public void tearDown() throws Exception {
//Robotium will finish all the activities that have been opened
solo.finishOpenedActivities();
}
}