与Maven并行运行TestNG测试并使用Maven传递参数

时间:2015-04-07 13:23:37

标签: testng surefire

我在测试中使用@Parameters("DeviceModel") 我通过testNG.xml文件运行并行3个线程。 在TestNG.XML中,我传递了3个参数。

1-st parameter: <parameter name="DeviceModel" value="devicemodel1">
2-nd parameter: <parameter name="DeviceModel" value="devicemodel2">
3-rd parameter: <parameter name="DeviceModel" value="devicemodel3">

当testNG.xml正在执行时,它需要1-stram for thread1,2-nd param for thread 2,3-rd for thread 3。 因此,我得到3个并行线程,每个线程具有不同的参数。

现在我希望通过Maven SureFire插件与TestNG进行并行测试。 我在pom.xml中传递了以下值

<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<parallel>tests</parallel>
<threadCount>3</threadCount>
<includes>
<include>packageName/*Test.java</include>
</includes>
<systemPropertyVariables>
<DeviceModel>devicemodel1</DeviceModel>
<DeviceModel>devicemodel1</DeviceModel>
<DeviceModel>devicemodel1</DeviceModel>
</systemPropertyVariables>
</configuration>

这不起作用。 我的测试仅执行每个线程的第三个参数。 我如何使用maven将3个不同的参数传递给3个并行线程的TestNg?

2 个答案:

答案 0 :(得分:0)

您可能想尝试在一个<DeviceModel>代码中传递所有参数,并在@DataProvider@Factory内解析它 有关详细信息,请参阅文档enter link description here

答案 1 :(得分:0)

可以继续使用Maven的TestNG.xml。

在此示例中,套件文件TestNG.xml位于src / test / resources子文件夹中:

<build>
    <testResources>
        <testResource>
            <directory>src/test/resources</directory>
            <filtering>true</filtering>
        </testResource>
    </testResources>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.18.1</version>
            <configuration>
                <suiteXmlFiles>
                    <suiteXmlFile>src/test/resources/TestNG.xml</suiteXmlFile>
                </suiteXmlFiles>
            </configuration>
        </plugin>
    </plugins>
</build>