2016-09-20 5 views
0

Gibt es eine Möglichkeit dieselbe Klasse parallel mit mehreren Threads ausgeführt werden, wieTestNG - Lauf gleiche Klasse mit mehreren Threads parallel

<suite name="myTestSuite" verbose="1"> 
    <test name="myTest" parallel="classes" thread-count="5"> 
     <classes> 
      <class name="myPackage.Test" /> 
     </classes> 
    </test> 
</suite> 

ich in die Klasse will ‚myPackage.Test‘ in 5 aufgerufen werden parallel threads.I wissen, dass es funktioniert, wenn ich verschiedene Klassen parallel ausgeführt werden soll, wie

<suite name="myTestSuite" verbose="1"> 
    <test name="myTest" parallel="classes" thread-count="5"> 
     <classes> 
      <class name="myPackage.Test1" /> 
      <class name="myPackage.Test2" /> 
      <class name="myPackage.Test3" /> 
      <class name="myPackage.Test4" /> 
      <class name="myPackage.Test5" /> 
     </classes> 
    </test> 
</suite> 
+0

Was passiert, wenn Sie 5 mal wiederholen? – Grasshopper

+0

Was bedeutet "dieselbe Klasse parallel ausführen"? Möchten Sie die gleichen Tests mehrmals ausführen? – juherr

+0

@Grasshopper - Wenn ich den Klassennamen fünfmal wiederhole, läuft er nur einmal. – Affi

Antwort

0

Was können Sie tun, ist eine Factory mit 5 Instanzen Ihrer Testklasse zu erstellen.

public class TestFactory { 

    @Factory 
    public Object[] createInstances() { 
    Object[] result = new Object[5]; 
    for (int i = 0; i < 5; i++) { 
     result[i] = new Test(); 
    } 
    return result; 
    } 
} 

Dann können Sie parallel="instances" verwenden.

<suite name="myTestSuite" verbose="1"> 
    <test name="myTest" parallel="instances" thread-count="5"> 
     <classes> 
      <class name="myPackage.TestFactory"/> 
     </classes> 
    </test> 
</suite> 
0

Als Alternative zu den Fabrik-Mustern, könnten Sie einen <test> Knoten für jedes Mal, wenn Sie die Klasse ausgeführt werden sollen erstellen, dann durch test parallelisieren. Sie möchten auch Ihre Parallelisierungsattribute an den Knoten <suite> verschieben. Zum Beispiel:

<suite name="mySuite" parallel="tests" thread-count="5"> 

    <test name="myTest1"> 
     <classes> 
      <class name="myPackage.Test" /> 
     </classes> 
    </test> 

    <!-- Repeat the '<test>' node as many times as you wish to run the class --> 

</suite> 

Sie werden jedes <test> eindeutig benennen müssen, aber das ist anständig einfache Art und Weise die gleichen Klasse oft und parallel laufen zu lassen.

Verwandte Themen