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();
}}
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
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
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 .
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>
<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>
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.