ТестНГ
Разработчик(и) | Седрик Беуст, команда TestNG |
---|---|
Стабильная версия | 7.6.1
/ 4 июля 2022 г [1] |
Репозиторий | |
Написано в | Ява |
Операционная система | Кросс-платформенный |
Тип | модульного тестирования Инструмент |
Лицензия | Лицензия Апач 2.0 [2] |
Веб-сайт | тестинг |
TestNG тестирования — это среда для языка программирования Java, созданная Cedric_Beust и вдохновленная JUnit и NUnit . Целью разработки TestNG является охват более широкого спектра категорий тестов: модульных, функциональных, сквозных, интеграционных и т. д., с более мощными и простыми в использовании функциями.
Функции
[ редактировать ]Основные возможности TestNG включают в себя:
- Поддержка аннотаций.
- Поддержка тестирования на основе данных/параметризованного тестирования (с
@DataProvider
и/или конфигурацию XML). - Поддержка нескольких экземпляров одного и того же тестового класса (с
@Factory
) - Гибкая модель исполнения. TestNG может быть запущен либо Ant через build.xml (с определенным набором тестов или без него), либо с помощью плагина IDE с визуальными результатами. Нет
TestSuite
class, а наборы тестов, группы и тесты, выбранные для запуска, определяются и настраиваются с помощью XML-файлов. - Параллельное тестирование: запускайте тесты в пулах потоков произвольного размера с различными доступными политиками (все методы в отдельном потоке, один поток на каждый тестовый класс и т. д.) и проверяйте, является ли код многопоточным.
- Встраивает BeanShell для большей гибкости.
- по умолчанию Функции JDK для среды выполнения и ведения журнала (без зависимостей).
- Зависимые методы тестирования сервера приложений. [ нужны разъяснения ]
- Распределенное тестирование: позволяет распределять тесты на подчиненных машинах.
Поставщик данных
[ редактировать ]Поставщик данных в TestNG — это метод в тестовом классе, который предоставляет массив различных фактических значений зависимым методам тестирования.
Пример:
//This method will provide data to any test method that declares that its Data Provider is named "provider1".
@DataProvider(name = "provider1")
public Object[][] createData1() {
return new Object[][] {
{ "Cedric", new Integer(36) },
{ "Anne", new Integer(37) }
};
}
// This test method declares that its data should be supplied by the Data Provider named "provider1".
@Test(dataProvider = "provider1")
public void verifyData1(String n1, Integer n2) {
System.out.println(n1 + " " + n2);
}
// A data provider which returns an iterator of parameter arrays.
@DataProvider(name = "provider2")
public Iterator<Object[]> createData() {
return new MyIterator(...);
}
// A data provider with an argument of the type java.lang.reflect.Method.
// It is particularly useful when several test methods use the same
// provider and you want it to return different values depending on
// which test method it is serving.
@DataProvider(name = "provider3")
public Object[][] createData(Method m) {
System.out.println(m.getName());
return new Object[][] { new Object[] { "Cedric" } };
}
Возвращаемый тип поставщика данных может быть одним из следующих двух типов:
- Массив массива объектов (
Object[][]
), где размер первого измерения — это количество вызовов метода тестирования, а размер второго измерения содержит массив объектов, которые должны быть совместимы с типами параметров метода тестирования. - Ан
Iterator<Object[]>
. Единственная разница сObject[][]
заключается в том, что итератор позволяет вам лениво создавать тестовые данные. TestNG вызовет итератор, а затем метод тестирования с параметрами, возвращаемыми этим итератором, один за другим. Это особенно полезно, если у вас есть много наборов параметров, которые нужно передать методу, и вы не хотите создавать их все заранее.
Поддержка инструментов
[ редактировать ]TestNG поддерживается «из коробки» или через плагины каждой из трех основных IDE Java — 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 . Каждая структура имеет различия и соответствующие преимущества. Обсуждения переполнения стека отражают это противоречие. [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 должен возвращать List[]
с параметризованными значениями, которые будут переданы в конструктор тестового класса.
Заключение
[ редактировать ]Разные пользователи часто отдают предпочтение определенным функциям того или иного фреймворка. JUnit более популярен и часто по умолчанию поставляется с основными IDE. TestNG известен дополнительными опциями конфигурации и возможностью проведения различных видов тестирования. Какой из них подойдет больше, зависит от контекста использования и требований.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ | Страница релизов проекта GitHub
- ^ «Лицензия Apache версии 2.0» . Январь 2004 г. Архивировано из оригинала 21 декабря 2013 г.
- ^ «TestNG для Eclipse» .
- ^ JUnitReport. Архивировано 24 февраля 2010 г. на Wayback Machine.
- ^ «Анонс TestNG 4.6» . Архивировано из оригинала 12 декабря 2010 г. Проверено 4 марта 2010 г.
- ^ Выпущена финальная версия ReportNG 1.0.
- ^ PDFngreport 1.0.0
- ^ Отчеты TestNG XSL
- ^ «Юнит против TestNG» . stackoverflow.com.
- ^ «JUnit против TestNG» . stackoverflow.com. Архивировано из оригинала 2 февраля 2014 г.
- ^ «Какой фреймворк UnitTest сейчас изучать для Java?» . stackoverflow.com.
- ^ «Написание тестов — аннотаций» . junit.org .
- ^ «Что такое TestNG?» . qacreators.com.
- ^ «Руководство пользователя JUnit 5» . junit.org .