Вы можете реализовать ISuiteListener
, а в методе onFinish
у вас будет доступ к ISuite
и ISuiteResult
Тогда вы можете сделать
public void onFinish(ISuite suite) {
final Map<java.lang.String,ISuiteResult> res = suite.getResults();
for (ISuiteResult r : res.values()) {
context = r.getTestContext() ;
failedTestCases =context.getFailedTests().size();
}
}
size()
даст вам номер неудавшегося теста для этого набора. Как только вы знаете это число, вы можете реализовать его, чтобы остановить выполнение, используя стратегии в this
Если ваши тестовые примеры находятся в разных наборах, то при каждом вызове метода onFinish
вы можете подсчитать количество неудачных тестовых примеров для каждого набора и на основе этого остановить выполнение.
Другой альтернативой является реализация ITestListener
. В методе onTestFailure
у вас есть доступ к ITestResult
. Вы можете подсчитать, сколько раз вызывается метод onTestFailure
и на основании этого остановить выполнение. Я думаю, что реализация ITestListener
более подходит и проста в вашем случае.
Здесь я отредактировал, чтобы объяснить, как вы реализуете слушателя
import org.testng.ISuiteListener;
public class listener implements Itestlistener {
public int i = 0;
public void onTestFailure(ITestResult result) {
result.getName();
i++;
//your break logic goes here
if (i ==20){
// do something or call some function to stop execution
}
}
}
Вы можете узнать больше о слушателях testng здесь .
Для вашего EDIT выше (если вы хотите go таким образом). Хотя я все еще думаю, что вам следует реализовать слушатель, который более чище. Он будет вызываться только в том случае, если тест не пройден.
Но сделайте то же самое, что и я в методе onTestFailure
, добавьте счетчик и увеличьте его до else if
.
public int i = 0; //do this in your class
то в вашем методе
else if (Result.getStatus() == ITestResult.FAILURE) {
i++; //increase counter here
Collection<String> values = TestResultStatus.mpaskeysnew.get(Result.getName());
String resultout = String.join(" | ", values);
System.out.println(resultout);
Resmark.put(Result.getName(), resultout);
captureScreenShot(Result, "FAIL", getDriver());
Reporter.log(Result.getName() + " is FAIL");
Add_Log.info(Result.getName() + " is FAIL");
if (!(getDriver() == null)) {
closeWebBrowser();
}
TestResultTL.put(Result.getName(), "FAIL");
if (i==20){
// stop execution here
}
}