14 сент. 2011 г.

сокращение имени пакета в последних версиях Eclipse

Для того, чтобы сократить имя пакета, которое отображается в package explorer, например вместо com.testonica.dev -> T нажать Window -> Preferences -> Java -> Appearance -> Abbreviate package names и заполнить по образцу
com.testonica.munchen={M}

22 мар. 2011 г.

Тестрирование UI web приложения на Vaadin с помощью Selenium

Q: Как в автоматическом режиме протестировать web приложение ?
A: С помощью Selenium например.

Должны быть соблюдены следующие условия:
  1. работающий Selenium Server
  2. работающее тестируемое приложение
Рассмотрим случай когда приложение написано на Vaadin
Тест-кейс будет такой: 
  • Заполнить форму, которая имеет несколько текстовых полей, поле выбора из списка и поле checkbox. 
  • Одно из обязательных полей оставить пустым.
  • Нажать на кнопку отправления данных.
Ожидаемый результат:
  • Появление предупреждения об ошибке заполнения.
Для начала подготовим элементы формы к тому, чтобы на странице в браузере к ним можно было обратится по Id. Для этого можно воспользоваться присвоением DebugId каждому элементу. 
В фабрике полей
final TextField tf = (TextField) field;
tf.setRequired(true);
tf.setNullRepresentation("");
tf.setDebugId("sr_number");
return tf;
Мы присвоили этому полу идентификатор sr_number, так как это поле для ввода номера
Для кнопок формы
commit.setDebugId("form_commit");
delete.setDebugId("form_delete");
reset.setDebugId("form_reset");
Теперь можно запустить приложение и отправиться запускать selenium сервер, который можно найти на сайте selenium в разделе Selenium Server (formerly the Selenium RC Server).
Сервер запускается в консоли командой "java -jar selenium-server.jar -interactive"
Как видно по умолчанию сервер запущен с портом 4444

Для того, чтобы составить тестовый случай и запустить его воспользуемся Selenium IDE для firefox. В браузере firefox в Navigation toolbar нажимаем Tools -> Selenium IDE
кнопка записи теста должна быть уже включена, так что просто делаем действия нашего тест-кейса, то есть заполняем форму, действия записываются в тест.

Вот сама форма и поля со своими DebugId

Для отображения кода теста в формате JUnit 4, нужно нажать в окне Selenium IDE Options -> Format -> JUnit 4 и скопировать полученный исходный код
Вот немного адаптированный вариант
package ***;

import static org.junit.Assert.assertTrue;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.thoughtworks.selenium.DefaultSelenium;
import com.thoughtworks.selenium.Selenium;


public class SearchFieldTest {
 
 private Selenium selenium;
 
 private static String BROWSER = "*firefox";
 private static int PORT = 4444;
 
 @Before
 public void setUp() throws Exception {
  selenium = new DefaultSelenium("localhost", PORT, BROWSER, "http://localhost:8080/");
  selenium.start();
 }

 @Test
 public void testLogin() throws Exception {
  
  selenium.open("/app_path");
  
  selenium.type("sr_number", ""); // обязательное поле с пустым содержимым
  selenium.click("sr_description");
  selenium.type("sr_description", "zzz");
  selenium.click("//div[@id='sr_routeType']/select");
  selenium.select("//div[@id='sr_routeType']/select", "label=Linnaliin");
  selenium.click("//div[@id='sr_routeType']/select/option[1]");
  selenium.click("//div[@id='form_commit']/");
  
  assertTrue(selenium.isTextPresent("Please fill all fields!")); // ожидаем, что появится такая надпись
 
 }
 
 @After
 public void tearDown() throws Exception {
  selenium.stop();
 }
}
Код теста изначально получался не такой, в частности для нажатия кнопки получалось что-то невразумительное, пришлось изучать элементы
Save
и в итоге написать selenium.click("//div[@id='form_commit']/");
Теперь тест срабатывает.

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



8 мар. 2011 г.

Vaadin add-ons to Maven project with Eclipse

Установка add-on'a для Maven проекта с Vaadin может быть достаточно запутанным.
Допустим нам захотелось использовать в своем проекте адоны сторонних разработчиков, которые любезно предоставили их на специально отведенной для этого площадке directory. Для примера, попробуем установить FastLayouts (by Matti Tahvonen), каковые должны работать быстрее чем обыкновенные Vaadin UI Layouts.
И так создадим новый Maven проект с поддержкой Vaadin
в поле фильтр можно указать vaadin и выбрать vaadin-clean.
В результате получим проект в котором нужно будет произвести несколько изменений, в частности указать в Project Facets -> Vaadin Eclipse Integration
Dynamic Web Module так же придется выбрать.
Далее преобразования будут касаться pom.xml фаила в корне проекта. На странице адона для него можно будет скопировать элементы dependency и repository
Эти элементы следует скопировать в pom.xml а так же раскомментировать код, который следует за

для компиляции widget-ов, чем и является add-on.
Раскомментируйте так же следующий код

   com.google.gwt
   gwt-user
   2.1.1
   provided
  
Следующий этап: создать простой GWT module descriptor, для этого добавляем в исходники проекта xml фаил MyAppWidgetSet.gwt.xml с таким содержимым

    


Теперь проект готов к компиляции Vaadin виджетов. Для этой цели в Eclipse c установленным плагинов Vaadin integration есть кнопка Compile Vaadin Widgets
Эта кнопка должна запустить процесс компиляции и при удачном раскладе в консоле Eclipse мы наблюдаем output этого процесса
В результате в проекте, в папке WebContent, должна образоваться папка VAADIN
Vaadin полагает, что web app непременно должна находится в WebContent, честно говоря, пока не знаю как заставить Vaadin думать, что компилировать надо в другую папку. Самый тупой метод просто скопировать скомпилированный виджет (в данном случае всю папку VAADIN) в /src/main/webapp.
Далее укажем следующие параметры в web.xml между тегами

   widgetsetcom.b.a.MyAppWidgetSet 
для того, чтобы приложение использовало данный виджет.
Изменим исходный код приложения с иcпользованием FastGrid, создаем новый FastGrid размером 2x2, помещаем туда элементы Label с текстом индекса ячейки и добавляем FastGrid на Layout окна.
package com.b.a;

import com.vaadin.Application;
import com.vaadin.incubator.fastlayouts.FastGrid;
import com.vaadin.ui.Label;
import com.vaadin.ui.Window;

/**
 * The Application's "main" class
 */
@SuppressWarnings("serial")
public class MyVaadinApplication extends Application
{
    private Window window;

    @Override
    public void init()
    {
        window = new Window("My Vaadin Application");
        setMainWindow(window);
        
        final FastGrid fg = new FastGrid(2,2);
        for (int i = 0; i < 2; i++) {
   for (int j = 0; j < 2; j++) {
    fg.addComponent(new Label(i + ":" + j),i,j);
   }
  }
        
        window.addComponent(fg);
        
    }
    
}     
Если после запуска приложения на странице появляется сообщение
значит виджет не скомпилировался, следует проверить все этапы этого сложного процесса.
Полезными могут оказаться следующие ссылки

31 авг. 2010 г.

Подготовка к разработке ПО для Android на Windows

Android-приложения пишутся на Java и выполняются в виртуальной машине (VM). Важно отметить, что виртуальная машина – это не JVM, как можно было бы ожидать, а открытая технология Dalvik Virtual Machine. Каждое приложение Android запускается внутри экземпляра Dalvik VM, который, в свою очередь заключен в пределах управляемого ядром Linux процесса.

Для того чтобы начать разработку программного обеспечения для Android понадобится Eclipse IDE (http://www.eclipse.org/). Предположим, что эта программа уже установлена (самая новая версия: Eclipse 3.5 (Galileo)). Для дальнейшей разработки необходимы ADT Plugin for Eclipse и Android SDK в данном случае для Windows.

Установка ADT Plugin for Eclipse

Открываем Eclipse IDE и нажимаем Help -> Install New Software ...



Там нажимаем Add и

добавляем новый адрес и название репозитория http://dl-ssl.google.com/android/eclipse/

После этого выбираем только что добавленный адрес и ждем пока Eclipse покажет доступные дополнения


Должны появится Developer Tools

Отмечаем галочкой Developer Tools и устанавливаем (кнопка Next). Обновления будут скачиваться и скорее всего Eclipse попросит перезапустить IDE (Не компьютер а просто Eclipse IDE). Тепеь будем считать что плагин установлен.

Установка Android SDK
Скачайте архив последней версии SDK с сайта http://developer.android.com/sdk/index.html

Нужно выбрать файл соответствующей операционной системы, в данному случае windows.


Предлагаю распаковать фаилы в корневой каталог диска С: (в любом случае выбор места на диске остается за Вами, только запомните путь к распакованным фаилам)

В данном случае получилось C:\android-sdk-windows

По какой-то причине папок получается меньше, чем это необходимо для успешной работы, поэтому нужно создать дополнительно две папки в ручную : platforms и add-ons, пусть они и будут пустые. Теперь можно запустить программу SDK Setup.exe

Запустится Android SDK and AVD Manager и, вероятно, сначала не сможет получить даже список доступных обновлений. Чтобы исправить откроем Settings

и отметим галочкой Force https:// ... для того, чтобы использовать http вместо https.

Теперь в разделе Available Packages должно появиться много интересного (особенно если нажать Refresh)

Лично я собираюсь заниматься разработкой для платформы Android 1.5 Platform, но на всякий случай отметим все доступные пакеты и нажимаем Install Selected.

Какое-то время пакеты будут скачиваться и устанавливаться автоматически


Теперь вернемся к Eclipse и укажем ему где у нас лежит Android SDK

Данное меню можно вызвать Window -> Preferences -> Android
Тут находим папку где лежит SDK и нажимаем Apply, в итоге должен появиться список доступных палтформ

Отныне можем вызывать настройку SDK прямо из Eclipse IDE


Android-приложения могут работать как на реальном устройстве, так и на эмуляторе Android, который прилагается к SDK Android.
Создадим новый Virtual Device для запуска эмулятора Андройда.

в разделе Virtual Devices -> New


Выберем платформу, объем карты памяти и прочие настройки


Можем запустить эмулятор с созданным образом кнопкой Start


В результате должен запуститься эмулятор

usb_driver <- входит в SDK послу установки пакетов
Это каталог, содержащий все необходимые драйверы для подключения среды разработки к поддерживающим Android устройствам, таким, как G1 или разблокированный телефон для разработки Android Dev 1. Эти файлы необходимы только разработчикам, использующим платформу Windows.

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

Titanium

http://www.appcelerator.com/ помогает
разрабатывать приложения и для Android и для iPhone сразу. Идея очень удобная. Если на самом деле можно писать достаточно серьезные приложения, то очень ценная и интересная штука.

Установил и попробовал с Андройдом. Работает. Код пишется на JavaScript