В рамках выполнения testng генерирует файл с именем testng-failed.xml
, который содержит все детали методов, которые не удалось выполнить.Если вы просто ищете повторный запуск неудачных тестов, вы можете найти этот файл (в проекте maven он находится в папке target
.
. Вы можете сделать следующее (я предполагаю, что выиспользуют maven):
- Примите имя комплекта в вашем плагине surefire через свойство Maven.
- Измените плагин surefire, чтобы он ссылался на свойство maven для имени комплекта.
- Создайте сценарий оболочки или пакетный файл, который выполняет следующие действия:
- Проверяет, существует ли файл
testng-failed.xml
в целевой папке. - Если он найден, можно выполнить повторный запуск..
- Создайте резервную копию папки с отчетами о достоверности в другом месте, потому что, если этого не сделать, старые отчеты будут перезаписаны.
- Перезапустите тесты, передав
testng-failed.xml
расположение для свойства Maven, которое используется в вашем подключаемом модуле surefire.
Это должно быть сделано.
Другой вариант - в основном построить реализациюorg.testng.IRetryAnalyzer
и свяжит с @Test
методом.Это приведет к тому, что TestNG попытается снова вызвать метод @Test
, если он потерпит неудачу, до тех пор, пока реализация IRetryAnalyzer
не вернет обратно false
, указывающий TestNG больше не пытаться.
Вот пример
public class MyRetry implements IRetryAnalyzer {
private int retryCount=0;
private int maxRetryCount=1;
@Override
public boolean retry(ITestResult result) {
if (retryCount < maxRetryCount) {
retryCount++;
return true;
}
return false;
}
}
public class GitHub1241Sample {
@Test(retryAnalyzer = MyRetry.class)
public void test2() {
Assert.fail();
}
}
Если вы используете анализатор повторных попыток, вам не нужно создавать резервные копии отчетов и т. Д.,