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