L'exécution de TestNG par programmation à l'aide de maven en ligne de commande
J'ai besoin d'exécuter plusieurs suites de tests en parallèle.
L'une des approches, afin de créer une suite de fichiers comme ci-dessous -
<!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>
Créer une classe comme ci-dessous -
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();
}
}
Je suis en mesure d'atteindre l'objectif ci-dessus, quand je le lance à partir de l'IDE Eclipse.
Comment puis-je exécuter à partir d'un maven en ligne de commande?
Extrait de 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>
Actuellement à l'exécution de toute donnée XML-je utiliser -
mvn -Dtests=AllTests.xml test
J'ai trouvé beaucoup de conseils sur l'exécution des tests en parallèle (qui travaille dans maven trop): books.google.com/...
OriginalL'auteur praneel | 2013-07-03
Vous devez vous connecter pour publier un commentaire.
La solution la plus simple pour exécuter des tests en parallèle à l'utilisation de la configuration pour le maven-surefire-plugin comme ceci:
Habituellement, vous n'avez pas besoin d'un autre testng.xml fichier pour exécuter les tests, car ils seront exécutés par défaut basé sur le les conventions de nommage pour les tests.
En outre, il n'est pas nécessaire de créer des règles d'inclusion à part que votre définition est erronée.
Vous pouvez contrôler les tests sont exécutés en relation avec TestNG via les groupes de paramètres comme ceci:
En outre, il est possible de contrôler les tests sont exécutés via le
test
de la propriété comme ceci:ou
Plus de particules fines moyen de spécifier les tests en ligne de commande ressemble à ceci:
qui exécuter la méthode
myMethod
dans le MyTest classe.Je ne peux pas obtenir -Dtest travailler avec testNG
La version de maven-surefire-plugin utilisez-vous?
OriginalL'auteur khmarbaise
C'est ce qui a fonctionné pour moi:
a)
mvn test -U -Pselenium-tests
(Si vous souhaitez exécuter des tests)b)
mvn clean install -Pselenium-tests
(Si vous voulez construire et exécuter des tests)Cela va lancer la suite de tests(fichier xml) que vous avez spécifié dans votre pom:
OriginalL'auteur sachin jain
Pour exécuter votre
RunSuitesInParallel
classe avec maven, vous devez utiliser leexec
plugin puisque c'est une classe java avec une méthode main:Si j'étais à votre place, je changerais les 2 dans
testng.setSuiteThreadPoolSize(2);
àargs[0]
et l'utilisation-Dexec.args="2"
OriginalL'auteur Moshisho
Vous pouvez utiliser des caractères génériques pour correspondre à de grands ensembles.
Plugin Surefire
OriginalL'auteur ArunaNZ