2015-04-20 2 views
0

Я реализовал логику, которая повторно запускает неудачную TestNG тестовый класс по следующей ссылке:TestNG Re тестировался на провал, не работает методы BeforeClass AfterClass

https://martinholladay.wordpress.com/2013/11/17/webdriver-2-0-automatically-retry-failed-tests/

К сожалению, он запускает метод с «Test msgstr "аннотация, а не использование методов BeforeClass (@BeforeClass) и AfterClass (@AfterClass). Я пробовал искать методы setDependsOnMethods и getDependsOnMethods для ITestAnnotations безрезультатно.

Кто-нибудь знает, как получить класс слушателя для запуска методов BeforeClass и AfterClass?

public class RetryListener implements IAnnotationTransformer { 
    public void transform(ITestAnnotation annotation, Class testClass, 
      Constructor testConstructor, Method testMethod) { 
     IRetryAnalyzer retry = annotation.getRetryAnalyzer(); 
     if (retry == null) { 
      annotation.setRetryAnalyzer(Retry.class); 
     } 
    } 
} 

//The test begins here.... 

@BeforeClass(alwaysRun = true) 
@Parameters("Environment") 
public void BeforeClass(String sEnv) throws Exception { 
    WebDriver driver = new FirefoxDriver(); 
    driver.get("www.google.com"); 

} 

@Test 
public void TestMethod() { 
    //Some test... 
} 

@AfterClass(alwaysRun = true) 
public void AfterClass() { 
    driver.quit(); 
} 
+0

Можете ли вы скопировать соответствующий код в свой вопрос? –

+0

Готово .. Помогает? – jsmith

+0

@jsmith Да, я столкнулся с аналогичной проблемой, «RetryListener» не запускает весь тестовый класс, он просто запускает тест, который не прошел. Таким образом, он не выполнит ничего, кроме @Test. Чтобы снова запустить весь тестовый класс, вам нужно использовать что-то еще, например. вы можете testng-failed.xml из каталога testng-report. Напишите код для запуска testng-failed.xml, когда вы получите какой-либо сбой. Но он всегда будет работать в конце исполнения. –

ответ

Смежные вопросы