複数のテスト スイートを並行して実行する必要があります。アプローチの1つは、以下のようにスイートファイルを作成することです-
<!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