Ответ
TestNG предоставляет возможность запуска тестов через командную строку, что критически важно для интеграции в CI/CD-пайплайны (Jenkins, GitLab CI) и автоматизированных скриптов.
Базовый синтаксис команды:
java -cp "path/to/testng.jar:path/to/your/classes:path/to/dependencies" org.testng.TestNG testng.xml
Разбор команды:
-cpили-classpath— определяет classpath, куда должны входить:- JAR-файл TestNG (
testng.jar). - Скомпилированные тестовые классы вашего проекта.
- Все необходимые зависимости (например, библиотеки Selenium, Spring).
- JAR-файл TestNG (
org.testng.TestNG— главный класс-запускатель фреймворка.testng.xml— XML-файл конфигурации, описывающий тестовые сьюиты, классы, группы и параметры.
Полезные параметры командной строки:
-testclass— запуск конкретного тестового класса:-testclass com.example.MyTest-groups/-excludegroups— фильтрация по группам:-groups "smoke,regression"-reporter— настройка репортера (например, для расширенного логирования).
Пример минимального testng.xml:
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Command Line Suite">
<test name="Smoke Tests">
<classes>
<class name="com.example.LoginTest"/>
<class name="com.example.SearchTest"/>
</classes>
</test>
</suite>
Практический совет: Используйте инструменты сборки (Maven/Gradle) для управления classpath. Запуск через Maven: mvn test, через Gradle: gradle test. Это избавляет от ручного указания путей к JAR-файлам.
Ответ 18+ 🔞
А, слушай, смотри, вот эта ваша TestNG, она же не только в IDE торчать должна, как приклеенная! Её, мать её, из командной строки запускать можно — это ж основа основ, чтобы в эти ваши CI/CD-пайплайны впихнуть, будь то Jenkins или там GitLab CI. Без этого — нихуя не автоматизация, а ручное дергание за верёвочки.
Вот смотри, как это выглядит, базово:
java -cp "path/to/testng.jar:path/to/your/classes:path/to/dependencies" org.testng.TestNG testng.xml
А теперь разжёвываю, что тут к чему, а то глаза стекленеют:
-cpон же-classpath— это, блядь, такой мешок, куда ты должен запихнуть всё, что нужно для запуска:- Сам TestNG, то есть его
testng.jar(ну, ёпта, логично же). - Свои скомпилированные тестовые классы, которые ты написал.
- И, внимание, все зависимости, которые эти твои классы жрут — Selenium там, Spring, Apache Commons — всё, что угодно, блядь.
- Сам TestNG, то есть его
org.testng.TestNG— это и есть та самая кнопка «Пуск», главный класс, который всё это безобразие запускает.testng.xml— а это, сука, сценарий. Файлик, где написано, что и как запускать: какие сьюиты, классы, группы.
Ещё можно покрутить гайки параметрами:
-testclass— если хочешь запустить один конкретный класс и забить хуй на остальные:-testclass com.example.MyTest.-groups/-excludegroups— чтобы отфильтровать тесты по группам, типа только smoke-тесты:-groups "smoke,regression".-reporter— для любителей подробных отчётов, можно настроить, как именно тебе выливать логи.
Вот тебе пример самого простого testng.xml, чтоб понятно было:
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Command Line Suite">
<test name="Smoke Tests">
<classes>
<class name="com.example.LoginTest"/>
<class name="com.example.SearchTest"/>
</classes>
</test>
</suite>
А теперь жизненный совет, чтобы не ебаться с classpath вручную, как последний динозавр: Используй нормальные инструменты сборки — Maven или Gradle! Они за тебя всю эту хуйню с путями и зависимостями сами решат. Запустил через Maven — mvn test, через Gradle — gradle test, и похуй. Не надо вручную JAR-ники собирать в кучу, ебать мои старые костыли.