Gradle 如何通过终端传递以逗号分隔的TestNG组(组1、组2)?

Gradle 如何通过终端传递以逗号分隔的TestNG组(组1、组2)?,gradle,testng,gradlew,Gradle,Testng,Gradlew,在我当前的build.gradle中,我使用低于目标通过命令行运行特定的组 test { jvmArgs "-DisParallel=true" useTestNG(){ suites testngxml includeGroups System.properties['groups'] } } 现在我想通过多个带有逗号分隔的gradlew clean test的组-Dgroups

在我当前的build.gradle中,我使用低于目标通过命令行运行特定的组

  test {
        jvmArgs "-DisParallel=true"
        useTestNG(){
            suites testngxml
            includeGroups System.properties['groups']
        }   
    }
现在我想通过多个带有逗号分隔的gradlew clean test的组-Dgroups='group1,group2'


请提供任何帮助

为什么不在TestNG Suite xml文件中管理它,而不是尝试在Gradle构建文件级别管理它

您可以在TestNG套件xml文件中使用BeanShell,它能够将组名作为JVM参数读取,然后解析并相应地运行测试

下面是一个示例,它接受一个组名作为JVM参数,然后动态地让测试在且仅当它们属于所传递的组名时运行。您可以通过添加拆分逻辑,然后利用相同的containsKey逻辑来增强这一点

有关更多信息,请参阅以下内容:


我们将数据存储在DB中,并在那里设置组。我们通过命令行gradlew test-Dgroups=group动态地传递组。我们没有使用testscripts/testng中提到的组。xml@nurav-我在回复中提到的xml没有“组”部分。它使用beanshell方法选择器根据您通过JVM参数传入的组动态决定要包括的组。所以我不太明白您在testscripts/testng.xml中提到的使用组是什么意思。顺便提一下当您通过当前gradle设置中的JVM参数传入多个组时,您面临什么问题。想详细说明一下吗?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="false">
    <test name="Test">
        <method-selectors>
            <method-selector>
                <script language="beanshell">
                <![CDATA[whatGroup = System.getProperty("groups");
                groups.containsKey(whatGroup);
                ]]>
                </script>
            </method-selector>
        </method-selectors>
        <classes>
            <class name="organized.chaos.GroupsPlayGround" />
        </classes>
    </test> <!-- Test -->
</suite> <!-- Suite -->