我需要并行运行多个测试套件。 其中一种方法是创建一个套件文件,如下所示 -
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="AllTests" verbose="8">
<suite-files>
<suite-file path="./Suite1.xml"></suite-file>
<suite-file path="./Suite2.xml"></suite-file>
</suite-files>
</suite>
创建一个类 -
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
import org.testng.xml.Parser;
import org.testng.xml.XmlSuite;
import org.testng.TestNG;
import org.xml.sax.SAXException;
public class RunSuitesInParallel{
public static void main(String[] args) throws FileNotFoundException, ParserConfigurationException, SAXException, IOException {
TestNG testng = new TestNG();
testng.setXmlSuites((List <XmlSuite>)(new Parser("src"+File.separator+"test"+File.separator+"resources"+File.separator+"xml_Suites"+File.separator+"AllTests.xml").parse()));
testng.setSuiteThreadPoolSize(2);
testng.run();
}
}
当我从Eclipse IDE运行它时,我能够实现上述目标。 如何从maven命令行运行它?
POM.xml的片段 -
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14.1</version>
<configuration>
<include>com/shn/test/*Tests.class</include>
<suiteXmlFiles>
<!-- <suiteXmlFile>src/test/resources/TestNG.xml</suiteXmlFile> -->
<suiteXmlFile>${tests}</suiteXmlFile>
</suiteXmlFiles>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
目前要执行任何给定的XML我使用 -
mvn -Dtests=AllTests.xml test
答案 0 :(得分:1)
并行运行测试的最简单方法是使用maven-surefire-plugin的配置,如下所示:
</plugins>
[...]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.15</version>
<configuration>
<parallel>methods</parallel>
<threadCount>10</threadCount>
</configuration>
</plugin>
[...]
</plugins>
通常,您不需要单独的testng.xml文件来运行测试,因为默认情况下它们将基于naming conventions for tests运行。 此外,除了您给出的定义错误之外,不需要制定单独的包含规则。
您可以通过groups参数控制与TestNG关系运行的测试,如下所示:
mvn -Dgroups=Group1 test
此外,可以通过test
property控制哪些测试将运行:
mvn -Dtest=MyTest test
或
mvn -Dtest=MyTest,FirstTest,SecondTest test
从命令行指定测试的更细粒度方法如下:
mvn -Dtest=MyTest#myMethod test
在MyTest类中运行方法myMethod
。
答案 1 :(得分:0)
这对我有用:
mvn test -U -Pselenium-tests
(如果你想运行测试)
b)mvn clean install -Pselenium-tests
(如果你想构建和运行测试)这将运行您在pom中指定的测试套件(xml文件):
<suiteXmlFiles>
<!-- <suiteXmlFile>src/test/resources/TestNG.xml</suiteXmlFile> -->
<suiteXmlFile>${tests}</suiteXmlFile>
</suiteXmlFiles>
答案 2 :(得分:0)
要使用maven运行RunSuitesInParallel
课程,您需要使用exec
plugin,因为它是带有主要方法的java类:
mvn exec:java -Dexec.mainClass="your.package.RunSuitesInParallel"
如果我在你的位置,我会将testng.setSuiteThreadPoolSize(2);
中的2更改为args[0]
并使用-Dexec.args="2"
答案 3 :(得分:0)