#java #selenium-webdriver #testng
#java #selenium-webdriver #testng
Вопрос:
Я наткнулся на ответ о том, как использовать Retry
в Selenium web driver test. Теперь я реализовал класс Retry в разделе утилиты и внутри тестовой аннотации, приведенной следующим образом @Test(retryAnalyzer = Retry.class)
. Сейчас это работает нормально, но я хотел бы изменить этот способ, могу ли я использовать Повторную попытку любым другим способом вместо указания аннотации к тесту как @Test(retryAnalyzer = Retry.class)
? Также мне нужно прокомментировать @Test(enabled = true)
, Может кто-нибудь, пожалуйста, посоветовать?
utilities/Retry
класс
public class Retry implements IRetryAnalyzer {
private int retryCount = 0;
private int maxRetryCount = 2;
public boolean retry(ITestResult result) {
if(retryCount < maxRetryCount) {
retryCount ;
return true;
}
return false;
}
}
tests/RepaymentCalculatorTest
public class RepaymentCalculatorTest extends BaseTest {
Retry retryTest = new Retry();
//@Test(enabled = true)
@Test(retryAnalyzer = Retry.class)
public void loanRepaymentCalculator() throws InterruptedException {
// rest of the UI test code added here ....
}
Ответ №1:
я использую немного другой способ, нет необходимости добавлять класс в аннотацию @Test
Давайте создадим для этого пользовательский прослушиватель
public class RetryFailedTestCases implements IRetryAnalyzer, IAnnotationTransformer{
public void transform(ITestAnnotation testannotation, Class testClass, Constructor testConstructor,
Method testMethod) {
testannotation.setRetryAnalyzer(RetryFailedTestCases.class);
}
int counter = 0;
int retryLimit = 1; //as per need
@Override
public boolean retry(ITestResult result) {
if(counter < retryLimit)
{
counter ;
return true;
}
return false;
}
}
Теперь добавьте это в testng.xml файл
<listeners>
<listener class-name="package.RetryFailedTestCases"/>
</listeners>
это просто и полезно, когда мы запускаемся как suite.. в качестве альтернативы мы можем указать класс слушателя поверх каждого класса вместо testng.xml файл
я не уверен, почему явно указано enabled = true ? даже если не @Test выполнить правильно? если вы не хотите выполнять, укажите значение false.
Комментарии:
1. Спасибо .. могу я узнать, что делает метод преобразования? почему мы должны упомянуть
Class testClass, Constructor testConstructor, Method testMethod
внутри этого?2. даже если мы не упомянули, что enabled = true @Test будет выполнен, вы правы, добавлять это нет смысла…