Ответ
Использовал TestNG как основной фреймворк для автоматизации тестов на Java.
Ключевые используемые возможности:
- Аннотации: Для управления жизненным циклом тестов (
@Test,@BeforeMethod,@AfterMethod,@BeforeSuite). - Параметризация тестов: С помощью
@DataProviderдля запуска одного теста с разными наборами данных. - Группировка тестов: Объединение тестов в группы (
groups = {"smoke", "regression"}) для selective запуска. - Зависимости тестов: Использование
dependsOnMethodsдля определения порядка выполнения. - Параллельный запуск: Настройка параллельного выполнения тестов в
testng.xmlдля ускорения прогона.
Пример теста с DataProvider:
@DataProvider(name = "authData")
public Object[][] getAuthData() {
return new Object[][] {
{ "validUser", "correctPassword", true },
{ "validUser", "wrongPassword", false }
};
}
@Test(dataProvider = "authData")
public void testLogin(String username, String password, boolean expectedSuccess) {
boolean actualResult = loginService.authenticate(username, password);
Assert.assertEquals(actualResult, expectedSuccess,
"Unexpected login result for user: " + username);
}
Интеграция и расширение:
- Интеграция с Maven/Gradle для запуска из командной строки и CI/CD (Jenkins, GitLab CI).
- Использование TestNG Listeners (
ITestListener,IReporter) для кастомной логики: создания скриншотов при падении, расширенного логирования, генерации отчетов. - Комбинирование с Selenium WebDriver для UI-тестов и RestAssured для API-тестов.