WikiDer > TestNG

TestNG
TestNG
Разработчики)Седрик Беуст, команда TestNG
Стабильный выпуск
7.0.0 / 17 августа 2019 г.; 15 месяцев назад (2019-08-17)[1]
Репозиторий Отредактируйте это в Викиданных
Написано вЯва
Операционная системаКроссплатформенность
ТипМодульное тестирование орудие труда
ЛицензияЛицензия Apache 2.0[2]
Интернет сайтиспытание.org

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

особенности

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

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


Поставщик данных

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

Пример:

	// Этот метод предоставит данные любому методу тестирования, который объявляет, что его поставщик данных назван «provider1». 	@DataProvider(имя = "provider1")	общественный Объект[][] createData1() {		вернуть новый Объект[][] { 			{ "Седрик", новый Целое число(36) },			{ "Энн", новый Целое число(37) }		};	}	// Этот тестовый метод объявляет, что его данные должны быть предоставлены поставщиком данных с именем "provider1".	@Тестовое задание(dataProvider = "provider1")	общественный пустота verifyData1(Строка n1, Целое число n2) {		Система.вне.println(n1 + " " + n2);	}	// Поставщик данных, который возвращает итератор массивов параметров.	@DataProvider(имя = "provider2")	общественный Итератор<Объект[]> createData() {		вернуть новый MyIterator(...);	}		// Поставщик данных с аргументом типа java.lang.reflect.Method.	// Это особенно полезно, когда несколько методов тестирования используют одно и то же 	// поставщик, и вы хотите, чтобы он возвращал разные значения в зависимости от 	// какой метод тестирования он обслуживает. 	@DataProvider(имя = "provider3")	общественный Объект[][] createData(Метод м) {		Система.вне.println(м.getName()); 		вернуть новый Объект[][] { новый Объект[] { "Седрик" } };	}

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

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

    Поддержка инструмента

    TestNG прямо из коробки или через плагины поддерживается каждой из трех основных Java IDE: Затмение, IntelliJ IDEA, и NetBeans. Он также поставляется с настраиваемой задачей для Apache Ant и поддерживается Maven система сборки. В Hudson непрерывная интеграция server имеет встроенную поддержку 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

    Различия и соответствующие преимущества двух, казалось бы, конкурирующих инструментов Java, TestNG и JUnit, обсуждались на протяжении десятилетия. У обоих лагерей есть веские основания и сторонники. Переполнение стека дискуссии отражают это противоречие.[9][10][11]

    Аннотации

    В JUnit 4 методы @BeforeClass и @AfterClass должны быть объявлены как статические. TestNG не имеет этого ограничения.

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

    Параметризованное тестирование

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

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

    В JUnit 4 @Бежать с и @ Параметры используются вместе для облегчения параметризованных испытаний, в то время как @ Параметры метод должен возвращать List [] со всеми фактическими значениями, которые будут переданы в специальный конструктор класса в качестве аргумента. В JUnit5 также есть @ParameterizedTest аннотация, позволяющая создать параметризованную функцию тестирования.[12]

    [13]

    Заключение

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

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

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

    1. ^ Страница выпусков GitHub
    2. ^ «Лицензия Apache версии 2.0». Январь 2004. Архивировано с оригинал 21 декабря 2013 г.
    3. ^ https://marketplace.eclipse.org/content/testng-eclipse
    4. ^ JUnitReport В архиве 2010-02-24 в 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. Архивировано из оригинал на 02.02.2014.
    11. ^ «Какую среду UnitTest изучать для Java сейчас?». stackoverflow.com.
    12. ^ «Руководство пользователя JUnit 5». junit.org.
    13. ^ "Что такое TestNG?". qacreators.com.


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