Существует два основных способа сделать это.
Подход № 1. Использование селектора бобов
- Убедитесь, что вы используете последнюю выпущенную версиюверсия TestNG.Его
7.0.0-beta1
на сегодняшний день. - Добавить зависимость от beanshell (ниже показано, как вы бы это сделали, если бы использовали maven)
<dependency>
<groupId>org.apache-extras.beanshell</groupId>
<artifactId>bsh</artifactId>
<version>2.0b6</version>
</dependency>
Измените xml вашего TestNG-комплекта следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="53799427_suite" parallel="false" verbose="2">
<method-selectors>
<method-selector>
<script language="beanshell">
<![CDATA[
whatGroup = System.getProperty("group");
shouldRun = Arrays.equals(new String[]{whatGroup}, testngMethod.getGroups());
return shouldRun;
]]>
</script>
</method-selector>
</method-selectors>
<test name="53799427_test">
<classes>
<class name="com.rationaleemotions.stackoverflow.qn53799427.TestClassSample"/>
</classes>
</test>
</suite>
Здесь тестовый класс com.rationaleemotions.stackoverflow.qn53799427.TestClassSample
выглядит точно так же, как пример, которым вы поделились.
Теперь, когда вы запускаетев этом XML-файле пакета, передав аргумент JVM -Dgroup=bat
, вы увидите вывод, который выглядит следующим образом (то есть после)
...
... TestNG 7.0.0-beta1 by Cédric Beust (cedric@beust.com)
...
Am bat
PASSED: batTest
===============================================
53799427_test
Tests run: 1, Failures: 0, Skips: 0
===============================================
===============================================
53799427_suite
Total tests run: 1, Passes: 1, Failures: 0, Skips: 0
===============================================
Подход № 2. Использование пользовательского селектора метода
- Убедитесь, что вы зависите от TestNG
7.0.0-SNAPSHOT
(Причина, по которой я так говорю, заключается в том, что в TestNG была ошибка, из-за которой эта функция не работала должным образом. Я пошел дальше и исправил еекак часть GITHUB-1985 . Но он еще не выпущен на сегодняшний день)
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.0.0-SNAPSHOT</version>
</dependency>
Чтобы использовать версию снимка, вам может потребоваться добавить <repository>
пометьте, как показано ниже, в вашем файле pom.
<repositories>
<repository>
<id>sonatype-nexus-snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</repository>
</repositories>
Теперь создайте пользовательскую реализацию
org.testng.IMethodSelector
, которая выглядит следующим образом:
import java.util.Arrays;
import java.util.List;
import org.testng.IMethodSelector;
import org.testng.IMethodSelectorContext;
import org.testng.ITestNGMethod;
public class FilteringMethodSelector implements IMethodSelector {
@Override
public boolean includeMethod(
IMethodSelectorContext context, ITestNGMethod method, boolean isTestMethod) {
String whichGroup = System.getProperty("group", "all");
if ("all".equalsIgnoreCase(whichGroup)) {
return true;
}
boolean isEqual = Arrays.equals(new String[]{whichGroup}, method.getGroups());
if (context != null) {
context.setStopped(true);
}
return isEqual;
}
@Override
public void setTestMethods(List<ITestNGMethod> testMethods) {}
}
Создайте xml-файл testng suite, который выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="53799427_suite" parallel="false" verbose="2">
<method-selectors>
<method-selector>
<selector-class
name="com.rationaleemotions.stackoverflow.qn53799427.FilteringMethodSelector" priority="0"/>
</method-selector>
</method-selectors>
<test name="53799427_test">
<classes>
<class name="com.rationaleemotions.stackoverflow.qn53799427.TestClassSample"/>
</classes>
</test>
</suite>
Здесь тестовый класс com.rationaleemotions.stackoverflow.qn53799427.TestClassSample
выглядит в точности как пример, которым вы поделились.
Теперь, когда вызапустите этот xml-файл пакета, передав аргумент JVM -Dgroup=bat
, вы увидите вывод, который выглядит следующим образом (то, что после)
...
... TestNG 7.0.0-SNAPSHOT by Cédric Beust (cedric@beust.com)
...
Am bat
PASSED: batTest
===============================================
53799427_test
Tests run: 1, Failures: 0, Skips: 0
===============================================
===============================================
53799427_suite
Total tests run: 1, Passes: 1, Failures: 0, Skips: 0
===============================================