J'ai l'entrée suivante dans mon pom.xml avec le fichier de suite défini dans la configuration.
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
Quelle est la bonne façon d'exécuter cela dans cmd en utilisant maven? Je suis capable d'exécuter le test avec la commande ci-dessous mais cela n'a pas de sens d'indiquer à nouveau le testng.xml dans la commande quand il est déjà défini dans le pom.
mvn clean test -DsuiteXmlFile=testng.xml
La solution la plus simple serait d'ajouter les lignes ci-dessous dans le plugin surefire.
<suiteXmlFiles>
<!-- pass testng.xml files as argument from command line -->
<suiteXmlFile>${suiteXmlFile}</suiteXmlFile>
</suiteXmlFiles>
Et exécutez votre fichier xml comme ci-dessous,
mvn clean test -Dsurefire.suiteXmlFiles=/path/to/testng.xml
Si vous avez un xml testng fixe, il vous suffit de faire mvn clean test
. Le plugin surefire serait exécuté par défaut dans la phase de test de maven et le code xml en dur serait récupéré.
en premier, veuillez ajouter une amélioration dans pom.xml ... besoin d'ajouter une section d'exécution:
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
En second lieu, vous pouvez créer une section dans pom.xml avec des variables. Et puis, en l'appelant depuis cmd.
<properties>
<defaultSuiteFiles>
./Sets/Suits/CMS_Administration_SiteBackup_029.xml,
</defaultSuiteFiles>
<suiteFile>${defaultSuiteFiles}</suiteFile>
</defaultSuiteFiles>
</properties>
...
...
<suiteXmlFiles>
<suiteXmlFile>${suiteFile}</suiteXmlFile>
</suiteXmlFiles>
Donc, résultat du prototype pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
.....
.....
<properties>
<defaultSuiteFiles>
./Sets/Suits/CMS_Administration_SiteBackup_029.xml,
</defaultSuiteFiles>
<suiteFile>${defaultSuiteFiles}</suiteFile>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<profiles>
<profile>
<id>Base configuration</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<defaultGoal>install</defaultGoal>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<inherited>true</inherited>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>${suiteFile}</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<dependencies>
<dependency>
<groupId>org.seleniumhq.Selenium</groupId>
<artifactId>Selenium-Java</artifactId>
<version>3.3.1</version>
</dependency>
</dependencies>
</project>
Et utilisez ceci, comment un exemple pour cmd: mvn test -DdefaultSuiteFiles="./YOUR_DIRECTORY/YOUR_SUITE.xml,"
Explications: dans pom.xml, vous configurez les xml par défaut et les placez sur variable. Et, si vous utilisez une variable en cmd, vous réécrivez des valeurs.