6

複数のテスト スイートを並行して実行する必要があります。アプローチの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
4

4 に答える 4

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 ファイルは必要ありません。これは、テストの命名規則に基づいてデフォルトで実行されるためです。さらに、指定された定義が間違っていることを除けば、個別のインクルード ルールを作成する必要はありません。

次のように groups パラメータを使用して、TestNG との関係でどのテストを実行するかを制御できます。

mvn -Dgroups=Group1 test

testさらに、次のようにプロパティを介してどのテストを実行するかを制御できます。

mvn -Dtest=MyTest test

また

mvn -Dtest=MyTest,FirstTest,SecondTest test

コマンド ラインからテストを指定するより細かい方法は次のようになります。

mvn -Dtest=MyTest#myMethod test

myMethodMyTest クラスでメソッドを実行します。

于 2013-07-03T15:49:48.323 に答える
0

ワイルドカードを使用して、大きなセットに一致させることができます。

mvn -Dtest=TestSquare,TestCi*le test

Surefire プラグイン

于 2019-04-16T02:37:06.110 に答える