web-dev-qa-db-fra.com

Comment appeler le fichier testng.xml à partir de pom.xml dans Maven

J'utilise les plug-ins Selenium WebDriver, Eclipse, TestNG et Surefire. Je ne parviens pas à exécuter le fichier testng.xml à partir de pom.xml. Lorsque je lance pom.xml avec mvn test , il exécute directement le fichier qui se trouve dans src/test/Java .

mon code pom.xml est 

<groupId>angel</groupId>
<artifactId>Angel</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

<name>Angel</name>  
<url>http://maven.Apache.org</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>   </properties>

<dependencies>
          <!-- Java API to access the Client Driver Protocols -->
 <dependency>
     <groupId>org.seleniumhq.Selenium</groupId>
    <artifactId>Selenium-Java</artifactId>
    <version>2.21.0</version>
 </dependency>
  <!-- JExcel API is a Java library which provides the ability to read, write, and                 modify Microsoft Excel spreadsheets.-->
  <dependency>
     <groupId>net.sourceforge.jexcelapi</groupId>
    <artifactId>jxl</artifactId>
    <version>2.6.10</version>
    </dependency>
   <dependency>
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
  <version>1.2.14</version>
</dependency>
 <!-- Java API for manipulate the Microsoft Excel Sheets.  -->  
 <dependency>  
<groupId>org.Apache.poi</groupId>  
<artifactId>poi-contrib</artifactId> 
 <version>3.5-beta5</version>   
 </dependency>
 <!-- Java Mail API used to send Mails. -->   <dependency>             <groupId>javax.mail</groupId> 
 <artifactId>mail</artifactId>   <version>1.4.3</version>
</dependency>
<dependency>
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>
  <version>6.3.1</version>
  <scope>test</scope>
</dependency>
 </dependencies>  
  <build>  
<plugins>
    <plugin>
        <groupId>org.Apache.maven.plugin</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.12</version>
          <configuration>
           <suiteXmlFiles>
               <suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
          </suiteXmlFiles>
                 </configuration> 
    </plugin>
 <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
             <source>1.6</source>
            <target>1.6</target>
         </configuration>        </plugin> 

</plugins> 
   </project>

Aidez-moi, s'il vous plaît.

Ma structure de projet est 

 project
--src/main/Java
--src/main/resources
--src/test/Java
    |
     --my testng class file with @Test method.
--src/test/resources
     |
      --testng.xml
--maven dependencies
--jre system library
--src
   |
    --main
    --test
--target
pom.xml

- => noms de dossiers | - => noms de sous-dossiers

Mon fichier testng.xml est ...

  <?xml version="1.0" encoding="UTF-8"?>
  <suite name="Suite1" verbose="1"  >

 <test name="samplePage Test" >
   <classes>
   <class name="TestScripts.SamplePage" >
        <methods>
            <include name = "SamplePageTest_Execution"/>
        </methods>
    </class>
</classes>
 </test>
   <test name="newSamplePage Test" >
    <classes>
   <class name="TestScripts.NewSamplePage" >
        <methods>
            <include name = "NewSamplePage_Execution02"/>
        </methods>
        </class>
    </classes>
   </test> 
 </suite>

je voulais juste appeler la méthode SamplePage_Execution de pom.xml à travers le fichier testng.xml.

Ma méthode SamplePage_Execution est 

  public class sample{
  @Test
  public static void SamplePageTest_Execution() throws Exception{

String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
boolean testStatus = true;
       driver = new FirefoxDriver();
      driver.get("http://www.google.com"); 

   WebElement searchField = driver.findElement(By.name("q")); 

    searchField.sendKeys(new String [] {"Selenium2.0"});

    searchField.submit();

    driver.close();
}}
10
Manigandan

Mon code suivant dans pom.xml fonctionne bien:

<profiles>
   <profile>
      <id>Selenium-tests</id>
      <build>
         <plugins>
            <plugin>
               <groupId>org.Apache.maven.plugins</groupId>
               <artifactId>maven-surefire-plugin</artifactId>
               <version>2.12.4</version>
               <configuration>
                  <suiteXmlFiles>
                     <suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
                  </suiteXmlFiles>
               </configuration>
            </plugin>     
         </plugins>
      </build>
   </profile>
</profiles>

Exécutez le test en utilisant la commande suivante:

mvn clean test -U -Pselenium-tests

OU,

mvn clean test
11
Ripon Al Wasim

Vous pouvez exécuter maven test en appelant testng.xml directement en ligne de commande via

mvn test -Dsurefire.suiteXmlFiles=src/test/resources/testng.xml
2
Xiao

Vous devez remplacer suiteXmlFile d'une classe en un fichier, par exemple le fichier testng.xml situé dans src/test/resources. En outre, mettez à jour le plug-in surefire (version actuelle 2.12). Une autre chose est que les tests Selenium sont généralement des tests d'intégration et non des tests unitaires.

Update Vous devez ajouter la dépendance testng à la place de la dépendance Junit. Donc, supprimez la dépendance junit et ajoutez la dépendance testng en conséquence à la documentation du maven-surefire-plugin .

2
khmarbaise

vous pouvez donner direct testng.xml au lieu de src/test/resources/testng.xml

Mon fichier POM.xml fonctionne bien. Remplacez-le par votre fichier POM.xml. Mettez à jour votre maven et exécutez à nouveau. Bonne chance :)

<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">
  <modelVersion>4.0.0</modelVersion>
  <groupId>Automation</groupId>
  <artifactId>Automation</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.18.1</version>
        <configuration>
          <forkCount>0</forkCount>
          <suiteXmlFiles>
            <suiteXmlFile>testng.xml</suiteXmlFile>
          </suiteXmlFiles>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
        <groupId>org.seleniumhq.Selenium</groupId>
        <artifactId>Selenium-Java</artifactId>
        <version>2.46.0</version>
    </dependency>
    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.5.0-b01</version>
    </dependency>
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.9.6</version>
    </dependency>
  </dependencies>
</project>
0
Shubham Jain
<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">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.adiltutorials.facebook</groupId>
  <artifactId>WebdriverTests</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.19.1</version>
        <configuration>
          <forkCount>0</forkCount>
          <suiteXmlFiles>
            <suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
          </suiteXmlFiles>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
        <groupId>org.seleniumhq.Selenium</groupId>
        <artifactId>Selenium-Java</artifactId>
        <version>2.52.0</version>
    </dependency>
    <dependency>
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>
  <version>6.8</version>
</dependency>  
</dependencies>

</project>
0
ADIL HANNOUNI

Je pense qu'il y a des erreurs de base ici ... Pom.xml = définition du paquet qui est maintenue par Maven 

et testing.xml (tout utilisateur xml peut définir) est utilisé pour la définition de test TestNG. Soit vous utilisez la configuration XML. Vous pouvez créer votre propre configuration à partir de paramètres d’exécution personnalisés pour exécuter Test NG Et la configuration fournie dans le fichier xml (nom du test, nom de la classe du programme d’écoute, nom de la suite ou nom de la classe) me correspond à votre classe de test. Comme si vous aviez déclear la classe nom = TestScripts.SamplePage mais votre classe de test = exemple, ce fichier xml n'exécutera jamais votre classe de test. Petit exemple: <class name="com.automation.test.TestA" /> c'est dans mon test xml et ma classe de test sera TestA. 

0
Shantonu