Разработчики) | Седрик Беуст, команда TestNG |
---|---|
Стабильный выпуск | 7.3.0 / 19 сентября 2020 г . [1] |
Репозиторий | |
Написано в | Ява |
Операционная система | Кроссплатформенность |
Тип | Инструмент модульного тестирования |
Лицензия | Лицензия Apache 2.0 [2] |
Веб-сайт | testng |
TestNG - это среда тестирования для языка программирования Java, созданная Седриком Беустом и вдохновленная JUnit и NUnit . Цель разработки TestNG - охватить более широкий диапазон категорий тестов: модульные, функциональные, сквозные, интеграционные и т. Д. С более мощными и простыми в использовании функциями.
Особенности [ править ]
Основные функции TestNG:
- Поддержка аннотаций.
- Поддержка управляемого данными / параметризованного тестирования (с
@DataProvider
конфигурацией и / или XML). - Поддержка нескольких экземпляров одного и того же тестового класса (с
@Factory
) - Гибкая модель исполнения. TestNG может запускаться либо Ant через build.xml (с определенным набором тестов или без него), либо подключаемым модулем IDE с визуальными результатами. Существует не
TestSuite
класс, а тестовые наборы, группа и тесты , выбранные для запуска определяются и настраиваются с помощью файлов XML. - Параллельное тестирование: запускайте тесты в произвольно больших пулах потоков с различными доступными политиками (все методы в собственном потоке, один поток на тестовый класс и т. Д.) И проверяйте, является ли код многопоточным.
- Встраивает BeanShell для большей гибкости.
- Функции JDK по умолчанию для времени выполнения и ведения журнала (без зависимостей).
- Зависимые методы тестирования сервера приложений. [ требуется разъяснение ]
- Распределенное тестирование: позволяет распространять тесты на ведомые машины.
Поставщик данных [ править ]
Поставщик данных в 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
Ссылки [ править ]
- ^ | Страница релизов проекта GitHub
- ^ "Версия лицензии Apache 2.0" . Январь 2004 Архивировано из оригинала на 2013-12-21. CS1 maint: обескураженный параметр ( ссылка )
- ^ https://marketplace.eclipse.org/content/testng-eclipse
- ^ JUnitReport Архивировано 24 февраля 2010 г. на Wayback Machine
- ^ Представляем TestNG 4.6
- ^ ReportNG 1.0 Final выпущен
- ^ PDFngreport 1.0.0
- ^ Отчеты TestNG XSL
- ^ «Юнит против TestNG» . stackoverflow.com.
- ^ "JUnit против TestNG" . stackoverflow.com. Архивировано из оригинала на 2014-02-02. CS1 maint: обескураженный параметр ( ссылка )
- ^ "Какой фреймворк UnitTest изучать для Java сейчас?" . stackoverflow.com.
- ^ «Написание тестов - Аннотации» . junit.org .
- ^ "Что такое TestNG?" . qacreators.com.
- ^ "Руководство пользователя JUnit 5" . junit.org .
Внешние ссылки [ править ]
- Домашняя страница TestNG