Одним из способов является реализация прослушивателя вызова метода.В методе after вы можете установить флаг, а в методе before вы можете проверить флаг и пропустить тест в зависимости от значения флага.Например:
package com.qmetry.qaf.example.test;
...
public class StopRunListener implements IInvokedMethodListener {
private static boolean hasFailure=false;
@Override
public void beforeInvocation(IInvokedMethod method, ITestResult testResult) {
String[] groups = testResult.getMethod().getGroups();
if(hasFailure && Arrays.asList(groups).contains("Test2")) {
throw new SkipException("Stop execution due to failure");
}
}
@Override
public void afterInvocation(IInvokedMethod method, ITestResult testResult) {
String[] groups = testResult.getMethod().getGroups();
if(!testResult.isSuccess() && Arrays.asList(groups).contains("Test1")) {
hasFailure=true;
}
}
}
Добавить прослушиватель в файл конфигурации XML
<listeners>
<listener class-name="com.qmetry.qaf.example.test.StopRunListener" />
</listeners>
<groups>
<run>
<include name="@Test1" />
<include name="@Test2" />
</run>
</groups>
<classes>
<class
name="com.qmetry.qaf.automation.step.client.gherkin.GherkinScenarioFactory" />
</classes>
С помощью синтаксиса Gherkin вы не можете указать зависимости или другие метаданные.Вы можете использовать синтаксис BDD2 , доступный в qaf-2.1.14, и установить зависимость группы test1
от test2
.Это обеспечит выполнение теста из группы test2
после группы test1
.Но он не пропустит тест, если один из тестов в зависимости от группы не пройден.То, что вы можете достичь с помощью слушателя, как показано в примере выше.
Например:
#meta-data on feature will be assigned to all scenario in feature file
@Test1
Feature: A feature is a collection of scenarios
@Test2
@dependsOnGroups:Test1
Feature: A feature is a collection of scenarios
XML config будет:
<listeners>
<listener class-name="com.qmetry.qaf.example.test.StopRunListener" />
</listeners>
<groups>
<run>
<include name="Test1" /> <!-- don't add @ in group for BDD or BDD2 -->
<include name="Test2" />
</run>
</groups>
<classes>
<class
name="com.qmetry.qaf.automation.step.client.text.BDDTestFactory2" />
</classes>