Thursday, April 26, 2012

Порядок с инициализации полей в Java

Сегодня обнаружил интересную багу. Не сразу понял в чем проблема, пока не запустил дебаггер :)

Есть такой класс А

Есть вот такой наследник класса A: Есть еще один наследник класса А:

Внимание, вопрос:
Какой результат выведется на экран, если запустить метод A.main?

Правильный ответ (для JDK 6):
null
foo2

Интересный задротский вопрос для собеседования получился, включу в собеседование на сеньорную позицию в Java :)

Tuesday, April 24, 2012

Automation testing dojo - настройка проекта на Robotframework

Краткая инструкция по установке

Видеомануал по установке Robotframework можно посмотреть здесь
Важно.Необходима версия Python, не ниже 2.6, но не Python 3.

Теперь, когда у вас установлен Python и setup tools, необходимо установить библиотеку robotframework-selenium2library. Я установил с помощью setup tools, запустив команду easy_install robotframework-selenium2library

Скачиваем шаблон проекта http://bit.ly/I7BZQZ и распаковываем. Я распаковал в C:\robotframework-template.

Пробуем запустить тест командой pybot --listener DojoListener.py SampleTest.txt. Если все успешно установлено, то тестовый сценарий упадет с ошибкой, обозначающей, что Selenium не смог найти элемент. Также выведется ошибка, которую выводит скрипт, репортящий результаты выполнения теста.
Возможная ошибка У меня во время запуска примера возникла ошибка '"[PYTHON_EXECUTABLE]"' is not recognized as an internal or external command, operable program or batch file . Чтобы ее пофиксить я зашел в Python\Scripts и в батнике прописал абсолютные пути к питону и роботу в pybot.bat

Устанавливаем Robotframework IDE (RIDE)

Скачиваем инсталляцию отсюда https://github.com/robotframework/RIDE/downloads и инсталлируем.

Прежде, чем запустить RIDE должен быть установлен wxPython. Качаем отсюда http://wxpython.org/download.php#stable
Важно. Если во время установки инсталлер просит ввести путь к установленному Python, то проверьте, чтобы версия wxPython совпадала с версией Python!


Теперь можно запустить RIDE. Для удобства я создал шорткат на скрипт [PythonInstalldir]\Scripts\ride.py на десктопе. Откроем тестовый файл (File->Open, выбираем C:\workspace\robotframework-template\SampleTest.txt).


Регистрация и логи

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

Заменим http://localhosth:8080 на реальный адрес приложения, которое будем автоматизировать.

Заменим JohnDoe на свое уникальное имя.

Важно - имя должно быть написано латинскими буквами без пробелов и спец символов.
Важно2 - Регистр имеет значение. Так JohnDoe и johndoe - это 2 разных пользователя

Соответствие тест кейзов сценариям

Сценарии, которые реализовывает приложение привязывается к тестам Robotframework'a с помощью тагов. В секции Settings, в строке Tags необходимо добавить так с текстом "Scenario N", где N - номер сценария.

Для запуска тестов из RIDE нужно указать полный путь к листенеру в строке Arguments на закладке Run:

После запуска вы должны увидеть сообщение о том, куда будут отправляться результаты тестов:

Saturday, April 21, 2012

Асинхронная событийаня модель в web разработке

Мой доклад на Ciklum Java Saturday. Асинхронная событийная модель в web разработке

The Camtasia Studio video content presented here requires JavaScript to be enabled and the latest version of the Adobe Flash Player. If you are using a browser with JavaScript disabled please enable it now. Otherwise, please update your version of the free Adobe Flash Player by downloading here.