В настоящее время нет способа достичь того, о чем вы просите.
TestNG будет только повторять неудачный тест, но не будет подниматься по лестнице выполнения, чтобы выяснить все вышестоящие зависимости и попытаться запустить их (ваш запрос - очень специфический вариант этого общего варианта использования).
Если подумать, зависимый тест выполняется только потому, что его восходящие зависимости (методы, от которых он зависит) были успешно выполнены. Так что, если в текущем тесте произошел сбой, зачем нужно повторно выполнять уже удовлетворенные восходящие зависимости? Его счетчик интуитивно понятен.
Для того, что у вас есть в качестве сценария использования, вы должны просто построить всю логику в методе @Test
, в котором вы позаботитесь об обработке повторов, а также вызове всей цепочки еще раз, если были неудачи.
Приведенный ниже образец должен пояснить, что
public class SampleTest {
@Test (retryAnalyzer = TestRetry.class)
public void orchestrateTest() {
firsttest();
secondtest();
thirdtest();
}
public void firsttest() {
System.out.println();
TestReporter.assertEquals("Test", "Test", "pass");
}
public void secondtest() {
TestReporter.assertEquals("Test", "Test1", "fail");
}
public void thirdtest() {
TestReporter.assertEquals("Test", "Test", "pass");
}
}
TestNG не поддерживает вариант использования, который вы ищете в своем вопросе.
Что касается примечания, вы не можете подключить прослушиватель IAnnotationTransformer
через аннотацию @Listeners
(это явно вызывается в javadocs этого интерфейса). Его можно подключить только через тег <listeners>
в вашем комплекте xml (или), обратившись к нему в файле META-INF\services\org.testng.ITestNGListener
(он называется Интерфейс поставщика услуг подход в Java)