从Maven运行特定的TestNG组

时间:2018-01-23 14:50:37

标签: maven testng

我有两组测试用例如下面的mentioend。

@Test(groups="one", dataProvider = "TestData")
public void firstTest(String data){
   //Code
}

@Test(groups="one", dataProvider = "TestData")
public void secondTest(String data){
   //Code
}

@Test(groups="two", dataProvider = "TestData")
public void thirdTest(String data){
   //Code
}

以下是XML文件。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name="Test-Automation" parallel="methods" thread-count="2" verbose="1">
    <test name="Suite Test" parallel="methods" thread-count="2" verbose="1">
        <listeners>
             <listener class-name="GroupByInstanceEnabler"></listener>
        </listeners>

        <classes>
            <class name="SampleTest">
                <methods>
                    <include name="firstTest"/>
                    <include name="secondTest"/>
                    <include name="thirdTest"/>
                </methods>
            </class>
        </classes>
    </test>
</suite>

以下是pom.xml构建详细信息。

 <build>
        <finalName>Automation</finalName>
        <filters>
            <filter>profiles/${build.profile.id}/config.properties</filter>
        </filters>
        <resources>
            <resource>
                <filtering>true</filtering>
                <directory>${basedir}/src/test/resources</directory>
            </resource>
        </resources>

        <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>


            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.20.1</version>
                <configuration>
                    <suiteXmlFiles>
                        <suiteXmlFile>${project.basedir}/testng.xml</suiteXmlFile>
                    </suiteXmlFiles>
                    <parallel>method</parallel>
                    <threadCount>2</threadCount>
                </configuration>
            </plugin>

        </plugins>
    </build>

我的问题:

使用Maven,如何运行组&#34;一个&#34;和小组&#34;两个&#34;分开。

我试过&#34; mvn test -Dgroups = 2&#34;但它只能正常运行(所有测试)。

注意:我使用2个不同的配置文件来运行组&#34;一个&#34;两次具有不同的值。这就是您在pom.xml文件中看到配置文件配置的原因。

1 个答案:

答案 0 :(得分:2)

您可以使用beanshell表达式来完成此操作。

首先将如下所示的beanshell表达式添加到套件xml文件中。

<?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("groupToRun");
                groups.containsKey(whatGroup);
                ]]>
                </script>
            </method-selector>
        </method-selectors>
        <classes>
            <class name="organized.chaos.GroupsPlayGround" />
        </classes>
    </test> <!-- Test -->
</suite> <!-- Suite -->

这样,您可以使用IDE中的套件xml,并仍然选择要执行的组。如果没有通过JVM参数提供值-DgroupToRun=one

,则可以丰富此beanshell以默认运行所有内容

有关beanshell执行的更多信息,请参阅:

  1. 官方TestNG文档here
  2. 我的博文link