Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

TestNG - это среда тестирования для языка программирования Java, созданная Седриком Беустом и вдохновленная JUnit и NUnit . Цель разработки TestNG - охватить более широкий диапазон категорий тестов: модульные, функциональные, сквозные, интеграционные и т. Д. С более мощными и простыми в использовании функциями.

Особенности [ править ]

Основные функции TestNG:

  1. Поддержка аннотаций.
  2. Поддержка управляемого данными / параметризованного тестирования@DataProviderконфигурацией и / или XML).
  3. Поддержка нескольких экземпляров одного и того же тестового класса (с @Factory)
  4. Гибкая модель исполнения. TestNG может запускаться либо Ant через build.xml (с определенным набором тестов или без него), либо подключаемым модулем IDE с визуальными результатами. Существует не TestSuiteкласс, а тестовые наборы, группа и тесты , выбранные для запуска определяются и настраиваются с помощью файлов XML.
  5. Параллельное тестирование: запускайте тесты в произвольно больших пулах потоков с различными доступными политиками (все методы в собственном потоке, один поток на тестовый класс и т. Д.) И проверяйте, является ли код многопоточным.
  6. Встраивает BeanShell для большей гибкости.
  7. Функции JDK по умолчанию для времени выполнения и ведения журнала (без зависимостей).
  8. Зависимые методы тестирования сервера приложений. [ требуется разъяснение ]
  9. Распределенное тестирование: позволяет распространять тесты на ведомые машины.


Поставщик данных [ править ]

Поставщик данных в TestNG - это метод в тестовом классе, который предоставляет массив различных фактических значений зависимым методам тестирования.

Пример:

// Этот метод предоставит данные любому методу тестирования, который объявляет, что его поставщик данных называется «provider1». @DataProvider ( name  =  "provider1" ) public  Object [] []  createData1 ()  { return  new  Object [] []  {  {  "Cedric" ,  new  Integer ( 36 )  }, {  "Anne" ,  new  Integer ( 37 )  } }; }// Этот тестовый метод объявляет, что его данные должны быть предоставлены поставщиком данных с именем "provider1". @Test ( dataProvider  =  "provider1" ) public  void  verifyData1 ( String  n1 ,  Integer  n2 )  { System . из . println ( n1  +  ""  +  n2 ); }// Поставщик данных, который возвращает итератор массивов параметров. @DataProvider ( name  =  "provider2" ) public  Iterator < Object []>  createData ()  { return  new  MyIterator (...); }// Поставщик данных с аргументом типа java.lang.reflect.Method. // Это особенно полезно, когда несколько методов тестирования используют один и тот же // поставщик, и вы хотите, чтобы он возвращал разные значения в зависимости от //, какой метод тестирования он обслуживает. @DataProvider ( name  =  "provider3" ) public  Object [] []  createData ( Method  m )  { System . из . println ( м . getName ());  вернуть  новый  объект [] []  {  новый  объект [] {  "Седрик"  }  }; }

Возвращаемый тип поставщика данных может быть одного из следующих двух типов:

  • Массив array of objects ( Object[][]), где размер первого измерения - это количество раз, когда метод тестирования будет вызываться, а размер второго измерения содержит массив объектов, которые должны быть совместимы с типами параметров метода тестирования.
  • An Iterator<Object[]>. Единственная разница в Object[][]том, что Iterator позволяет лениво создавать тестовые данные. TestNG вызовет итератор, а затем метод тестирования с параметрами, возвращаемыми этим итератором, один за другим. Это особенно полезно, если у вас есть много наборов параметров для передачи методу, и вы не хотите создавать их все заранее.

Поддержка инструмента [ править ]

TestNG прямо из коробки или через плагины поддерживается каждой из трех основных сред Java IDE - Eclipse , IntelliJ IDEA и NetBeans . Он также поставляется с настраиваемой задачей для Apache Ant и поддерживается системой сборки Maven . Сервер непрерывной интеграции Hudson имеет встроенную поддержку TestNG и может отслеживать и составлять графики результатов тестирования с течением времени. Большинство инструментов покрытия кода Java , таких как Cobertura , без проблем работают с TestNG.

Примечание. Поддержка TestNG для Eclipse встроена только в Eclipse Marketplace для версий Eclipse до 2018-09 (4.9). Для более поздних версий Eclipse TestNG необходимо установить вручную в соответствии с инструкциями на сайте TestNG. [3]

Отчетность [ править ]

TestNG генерирует отчеты об испытаниях в форматах HTML и XML. Вывод XML может быть преобразован задачей Ant JUnitReport [4] для создания отчетов, подобных тем, которые получаются при использовании JUnit. Начиная с версии 4.6, TestNG также предоставляет API-интерфейс репортера [5], который позволяет использовать сторонние генераторы отчетов, такие как ReportNG, [6], PDFngreport [7] и TestNG-XSLT, [8] .

Сравнение с JUnit [ править ]

TestNG имеет давнюю конкуренцию с другим инструментом тестирования JUnit . Каждая структура имеет отличия и соответствующие преимущества. Обсуждения Stack Overflow отражают это противоречие. [9] [10] [11]

Аннотации [ править ]

В JUnit 5 методы @BeforeAll и @AfterAll должны быть объявлены как статические в большинстве случаев. [12] TestNG не имеет этого ограничения.

TestNG включает четыре дополнительных пары аннотаций установки / разрыва для набора тестов и групп: @BeforeSuite, @AfterSuite, @BeforeTest, @AfterTest, @BeforeGroup и @AfterGroup, @BeforeMethod и @AfterMethod. TestNG также предоставляет поддержку для автоматизации тестирования приложения с использованием селена.

Параметризованное тестирование [ править ]

Параметризованное тестирование реализовано в обоих инструментах, но совершенно по-разному.

TestNG имеет два способа предоставления различных значений параметров методу тестирования: путем установки testng.xml и путем определения метода @DataProvider . [13]

В JUnit 5 аннотация @ParameterizedTest позволяет параметризованное тестирование. Эта аннотация объединена с другой аннотацией, объявляющей источник параметризованных аргументов, например @ValueSource или @EnumSource . Использование @ArgumentsSource позволяет пользователю реализовать более динамичный ArgumentsProvider. [14] В JUnit 4 @RunWith и @Parameters используются для облегчения параметризованных тестов, где метод @Parameters должен возвращать a List[]с параметризованными значениями, которые будут переданы в конструктор тестового класса.

Заключение [ править ]

Разные пользователи часто предпочитают определенные функции того или иного фреймворка. JUnit более популярен и часто по умолчанию поставляется с основными IDE. TestNG отличается дополнительными параметрами конфигурации и возможностями для различных видов тестирования. Какой еще подходит, зависит от контекста использования и требований.

См. Также [ править ]

  • Список фреймворков модульного тестирования
  • JUnit
  • xUnit

Ссылки [ править ]

  1. ^ | Страница релизов проекта GitHub
  2. ^ "Версия лицензии Apache 2.0" . Январь 2004 Архивировано из оригинала на 2013-12-21. CS1 maint: обескураженный параметр ( ссылка )
  3. ^ https://marketplace.eclipse.org/content/testng-eclipse
  4. ^ JUnitReport Архивировано 24 февраля 2010 г. на Wayback Machine
  5. ^ Представляем TestNG 4.6
  6. ^ ReportNG 1.0 Final выпущен
  7. ^ PDFngreport 1.0.0
  8. ^ Отчеты TestNG XSL
  9. ^ «Юнит против TestNG» . stackoverflow.com.
  10. ^ "JUnit против TestNG" . stackoverflow.com. Архивировано из оригинала на 2014-02-02. CS1 maint: обескураженный параметр ( ссылка )
  11. ^ "Какой фреймворк UnitTest изучать для Java сейчас?" . stackoverflow.com.
  12. ^ «Написание тестов - Аннотации» . junit.org .
  13. ^ "Что такое TestNG?" . qacreators.com.
  14. ^ "Руководство пользователя JUnit 5" . junit.org .


Внешние ссылки [ править ]

  • Домашняя страница TestNG