четверг, 6 декабря 2012 г.

Автоматизации на Robotium

Автоматизации на Robotium 

Начнем с установки нужных средств и написания простого теста.
Что нам для этого понадобится.

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

Как проверить установлена ли нужная версия java? Открываем консоль и пишем
java -version
 Должны получить что-то вроде
1java version "1.6.0_29"
2Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
3Java HotSpot(TM) Client VM (build 20.4-b02, mixed mode, sharing)
Если же получаем
1"java" не является внутренней или внешней
2командой, исполняемой программой или пакетным файлом.
тогда нужно поставить Java)

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

Скачиваем с официального сайта.Запускаем Eclipse

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

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

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

Получаем созданный проект. Давайте запустим сборку приложения и проверим его функционал.
Должны получить следующее сообщение в консоле.
1[2012-01-15 11:30:11 - Notepad] ------------------------------
2[2012-01-15 11:30:11 - Notepad] Android Launch!
3[2012-01-15 11:30:11 - Notepad] adb is running normally.
4[2012-01-15 11:30:11 - Notepad] Performing com.example.android.notepad.NotesList activity launch
5[2012-01-15 11:30:11 - Notepad] Automatic Target Mode: launching new emulator with compatible AVD 'Default'
6[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.example.android.notepad.R;
import com.jayway.android.robotium.solo.Solo;


public class AddNoteTest extends ActivityInstrumentationTestCase2{
 
 private static final String APP_PACKAGE_NAME = "com.example.android.notepad";
 protected Solo solo;

 @SuppressWarnings("deprecation")
 public AddNoteTest() {
  super(APP_PACKAGE_NAME, NotesList.class);
 }

 public void setUp() throws Exception {
  solo = new Solo(getInstrumentation(), getActivity());
 }
 
 public void testAddNote() throws Exception {
  solo.clickOnActionBarItem(R.id.menu_add);
  //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 телефоне, а так же создавать тесты без привязки к проекту приложения.

За все это мы аплодируем и говорим спасибо Андрею Дзыня.

Комментариев нет:

Отправить комментарий