TestNG - TestNG
Разработчики) | Седрик Беуст, команда TestNG |
---|---|
Стабильный выпуск | 7.3.0 / 19 сентября 2020 г .
|
Репозиторий | |
Написано в | Джава |
Операционная система | Кроссплатформенность |
Тип | Инструмент модульного тестирования |
Лицензия | Лицензия Apache 2.0 |
Веб-сайт | testng |
TestNG - это среда тестирования для языка программирования Java, созданная Седриком Беустом и вдохновленная JUnit и NUnit . Цель разработки TestNG - охватить более широкий диапазон категорий тестов: модульные, функциональные, сквозные, интеграционные и т. Д. С более мощными и простыми в использовании функциями.
Функции
Основные функции TestNG:
- Поддержка аннотаций.
- Поддержка управляемого данными / параметризованного тестирования (с
@DataProvider
конфигурацией и / или XML). - Поддержка нескольких экземпляров одного и того же тестового класса (с
@Factory
) - Гибкая модель исполнения. TestNG может запускаться либо Ant через build.xml (с определенным набором тестов или без него), либо подключаемым модулем IDE с визуальными результатами. Существует не
TestSuite
класс, а тестовые наборы, группа и тесты , выбранные для запуска определяются и настраиваются с помощью файлов 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" } };
}
Возвращаемый тип поставщика данных может быть одного из следующих двух типов:
- Массив 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.
Составление отчетов
TestNG генерирует отчеты об испытаниях в форматах HTML и XML. Вывод XML может быть преобразован задачей Ant JUnitReport для создания отчетов, подобных тем, которые получаются при использовании JUnit. Начиная с версии 4.6, TestNG также предоставляет API-интерфейс репортера, который позволяет использовать сторонние генераторы отчетов, такие как ReportNG, PDFngreport и TestNG-XSLT.
Сравнение с JUnit
TestNG имеет давнюю конкуренцию с другим инструментом тестирования JUnit . Каждый фреймворк имеет отличия и соответствующие преимущества. Обсуждения Stack Overflow отражают это противоречие.
Аннотации
В JUnit 5 методы @BeforeAll и @AfterAll должны быть объявлены как статические в большинстве случаев. TestNG не имеет этого ограничения.
TestNG включает четыре дополнительных пары аннотаций установки / разрыва для набора тестов и групп: @BeforeSuite, @AfterSuite, @BeforeTest, @AfterTest, @BeforeGroup и @AfterGroup, @BeforeMethod и @AfterMethod. TestNG также предоставляет поддержку для автоматизации тестирования приложения с использованием селена.
Параметризованное тестирование
Параметризованное тестирование реализовано в обоих инструментах, но совершенно по-разному.
TestNG имеет два способа предоставления различных значений параметров методу тестирования: путем установки testng.xml и путем определения метода @DataProvider .
В JUnit 5 аннотация @ParameterizedTest позволяет параметризованное тестирование. Эта аннотация объединена с другой аннотацией, объявляющей источник параметризованных аргументов, например @ValueSource или @EnumSource . Использование @ArgumentsSource позволяет пользователю реализовать более динамичный ArgumentsProvider
. В JUnit 4 @RunWith и @Parameters используются для облегчения параметризованных тестов, где метод @Parameters должен возвращать a List[]
с параметризованными значениями, которые будут переданы в конструктор тестового класса.
Заключение
Разные пользователи часто предпочитают определенные функции того или иного фреймворка. JUnit более популярен и часто по умолчанию поставляется с основными IDE. TestNG отличается дополнительными параметрами конфигурации и возможностями для различных видов тестирования. Какой еще подходит, зависит от контекста использования и требований.
Смотрите также
использованная литература