t.me/atinfo_chat Telegram группа по автоматизации тестирования

Ant + PageObject + Junit -- последовательность таргетов


(Hohner) #1

Добрый день.

Я бы хотел написать скрипт в Ant, чтобы иметь возможность выполнить несколько тестов (или скорее тест кейсов). Я использую PageObject паттерн + JUnit аннотации. Имеется два класса с @test методами, в которых определены шаги тестов. Эти классы используют методы и локаторы других классов (Page Objects). Какая последовательность таргетов должна быть в build.xml? Сначала компилировать классы-страницы (Page Objects), а затем таргет с запуском JUnit теста? Я находил примеры в сети, но в этих примерах люди не использовали PageObject паттерн, а все определялось прямо в тесте.

И еще вопрос: чтобы вы посоветовали Ant или Maven. Я пока остановился на  Ant, так как слышал, что он якобы проще. Но что перспективнее и продуктивнее? Хотелось бы из этих соображений выбирать инструменты.

 


(Vol) #2

В TestNG есть DataProvider, с помощю которго можно подавать "тестовые случаи", т.е один тесткейс будет стартовать столько раз, сколько есть тестовых случаев.

@DataProvider
public Object[][] parameters() {
 return new Object[][] {
 new Object[] { new Data("apple"), new Data("core") },
 }
}

@Test(dataProvider = "parameters")
public void f(Data d1, Data d2) {
 // ...
}

Использую Maven, минусов не вижу.

 


(Hohner) #3

Спасибо, попробую. Но, как я понял,  это больше похоже на DDT. У меня же несколько иной случай и тестовые методы @test находятся в разных классах (допустим мне это необходимо и совмещать я их не буду).


(Alexander Ivanovsky) #4

Я бы сделал как минимум 4 таргета:

  1. очистка директорий от результатов предыдущего запуска
  2. сборка исходников (http://ant.apache.org/manual/Tasks/javac.html), тут не важно используете вы PageObject или нет, главное чтобы все используемые либы были в classpath
    опционально можно собрать скомпилированные исходники в jar (http://ant.apache.org/manual/Tasks/jar.html), так удобнее их использовать в дальнейшем
  3. запуск тестов (http://ant.apache.org/manual/Tasks/junit.html), опять-таки все либы должны быть в classpath
  4. генерация репорта (http://ant.apache.org/manual/Tasks/junitreport.html)

Зависимости выставить по обратной цепочке: 4-ый зависит от 3-го, 3-ий от 2-го и т.д. (http://ant.apache.org/manual/targets.html)

Ant vs. Maven? Тут скорее вопрос личных предпочтений. Мне лично Ant нравится больше, потому что в билд файле можно явно задать всю последовательность действий (пусть это и более трудоемко). В Maven же бОльшая часть действий неявно задана шаблоном, и если нужно немного отойти от шаблона, иногда приходится "попотеть" :)

P.S. дома есть пример аналогичного билд файла, могу добавить вечером.


(Alexander Ivanovsky) #5

Таргет -- это такое понятие в Ant (http://ant.apache.org/manual/targets.html), и к дата провайдерам оно не имеет никакого отношения :)

Кстати, в JUnit дата провайдеры тоже есть (только обозначаются они аннотацией @Parameters).


(Hohner) #6

Отлично! Именно это я имел в виду. А то "методом тыка" не пошел процесс.

Если есть возможность прикрепить пример -- буду очень благодарен.


(Alexander Ivanovsky) #7

Обещанный пример -- http://pastebin.com/hXxKHzje