TestNG - TestNG

TestNG
Разработчики) Седрик Беуст, команда TestNG
Стабильный выпуск
7.3.0 / 19 сентября 2020 г . ; 11 месяцев назад ( 2020-09-19 )
Репозиторий
Написано в Джава
Операционная система Кроссплатформенность
Тип Инструмент модульного тестирования
Лицензия Лицензия Apache 2.0
Веб-сайт testng .org

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 - это метод в тестовом классе, который предоставляет массив различных фактических значений зависимым методам тестирования.

Пример:

	//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 отличается дополнительными параметрами конфигурации и возможностями для различных видов тестирования. Какой еще подходит, зависит от контекста использования и требований.

Смотрите также

использованная литература


внешние ссылки