TestNG - пропустить тест, который использует группы в аннотации - PullRequest
0 голосов
/ 26 июня 2018

Я не могу понять, как пропустить тесты из выполнения, если они имеют параметр group = "some" и выполнено несколько тестов с / без определения группы из файла testNG.xml.

Позвольте мне собрать то, что у меня есть.

@Test
public void shouldBeStatusCodeEqualTo200WhenGetRequestPerformed() {
    req.get().then().statusCode(200).log().ifValidationFails();
    System.out.println(req.get().getBody().asString());
    System.out.println("Status code is 200");
}

@Test(dataProvider = "queryParmsAccountSummaryData", dataProviderClass = AccountSummaryQueryStringsDataProvider.class, groups = "queryStringRequired")
public void shouldBeStatusCodeEqualTo200WhenGetRequestWithQueryStringParmPerformed(Map<String, String> queryStringParms) {
    req.params(queryStringParms);
    req.given().when().get().then().statusCode(200);
    System.out.println(req.get().getBody().asString());
    System.out.println("Status code is 200");

TestNG.xml

<test thread-count="5" name="GetAccountSummaryByCompany" parallel="classes">
    <parameter name="accountSummaryByCompany" value="th/rfff/ee" />
    <parameter name="customerCode" value="123" />
    <parameter name="countryCode" value="NOS" />

    <groups>
        <run>
            <include name="queryStringRequired" />
        </run>
    </groups>

    <classes>
        <class
            name="accMgn.accountSummaryByCompany.GetAccountSummaryByCompany" />
    </classes>
</test>

<test thread-count="5" name="GetLegalEntity" parallel="classes" enabled="true">
    <parameter name="legalEntity" value="fe/juy/fds" />


    <classes>
        <class name="accMgn.legalEntity.GetLegalEntity" />
    </classes>
</test>

Если я запускаю TestNG.xml, он выполняет оба теста. Даже если группа не определена в TestNG.xml. Как сделать так, чтобы он пропускался?

1 Ответ

0 голосов
/ 27 июня 2018

Вы можете использовать IAnnotationTransformer и переопределить метод transform в соответствии с вашими потребностями.

Пример:

public class AnnotationTransformer implements IAnnotationTransformer {
    @Override
    public void transform (final ITestAnnotation annotation, final Class testClass, final Constructor testConstructor,
            final Method testMethod) {
        String [] groups = annotation.getGroups ();
        for (String group : groups) {
            if (group.equals ("some")) {
                annotation.setEnabled (false);
                break;
            }
        }
    }
}

Не забудьте зарегистрировать слушателя в файле testng.xml в блоке listener, как показано ниже:

<listeners>
    <listener class-name="your.package.YourListenerClass" />
</listeners>
...