четверг, 6 февраля 2014 г.

Генерация JAXB-классов по xsd или xml

Иногда случаются ситуации, когда необходимо написать JAXB-классы для xml, а если повезло, то по xsd.
Есть, конечно, плагины для Eclipse и наверняка много других способов, но на мой взгляд проще всего поступить так.

1. Генерация JAXB из xml

Если в наличие есть только  xml, то придется сначала получить из него xsd. Это можно сделать вручную, конечно (особенно если файл не очень сложный), но быстрее файл схемы также сгенерировать. Неплохой онлайн-инструмент для генерации xsd  по  xml находится здесь:  http://www.freeformatter.com/xsd-generator.html

Хотя иногда он ошибается, так что лучше проконтролировать, что схема получилась полной.

Получив, наконец, с помощью этого или любого другого инструмента xsd идем и выполняем действия, описанные в пункте 2

2. Генерация JAXB из xsd

Берем свой  xsd  файл (например, он называется  xsd.xsd ) и идем в директорию, куда установлена  Java. Примерно сюда: C:\Program Files\Java\jdk1.7.0_40\bin

Открываем там командную строку (например, зажимая шифт кликаем правой кнопкой и в открывшемся меню нажимаем что-нибудь похожее на Open command window here).

Далее выполняем несложную команду > xjc.exe xsd.xsd

В случае успеха в консоли увидим, что парсинг схемы и генерация классов прошли успешно.

 
Идем в директорию и забираем получившиеся файлы себе в проект. 

Ну и да, скорее всего, если вы попали на эту статью, то знаете, что такое JAXB, зачем он нужен и как его использовать. Но если вдруг что-то позабылось, то освежить память можно здесь:

Page Object генератор для Selenium тестов

Когда нужно автоматизировать тестирование приложения с большим количеством страниц, бывает довольно утомительно описывать их вручную.
Очень удобный, простой и бесплатный сервис доступен по ссылке:
http://whispering-retreat-7160.herokuapp.com/generator

Он может генерировать Selenium Page Objects по html коду или по ссылке на нужный ресурс.
Поддерживаемые генератором языки: Java, C#, PHP, Ruby.

Работает он так:
1. Копируете-вставляете html-код
2. Выбираете целевой язык: Java, C#, PHP или Ruby
3. Пишете нужные Вам селекторы через ";", например //a;//input
4. Нажимаете на кнопку Generate

5. На выходе получаете свой Page Object:
public class CustomPage {

 @FindBy(id="paramField")
 private WebElement paramField;

 @FindBy(id="code")
 private WebElement code;

 @FindBy(id="description")
 private WebElement description;

}

И все, копируете его себе, переименовываете и радуетесь жизни!

Автор активно работает над своим сервисом, скоро обещает генерировать и некоторые методы, а не только поля.