J'utilise plusieurs tests automatisés Selenium avec Maven. Lorsque je débogue dans Eclipse, je clique généralement avec le bouton droit de la souris sur testing.xml et sur Exécuter en tant que> Suite de TestNG. Mais exécuter dans Jenkins doit être exécuté en utilisant mvn test
. Mais quand je lance ça, j'obtiens plusieurs erreurs:
[ERROR] Failed to execute goal org.Apache.maven.plugins:maven-compiler-plugin:3.6.1:compile (default-compile) on project ecom: Compilation failure: Compilation failure:
[ERROR] /Users/kroe761/Documents/workspace/ecom/src/main/Java/com/company/automation/ecom/HelperMethods.Java:[15,43] package com.company.automation.ecom.pages does not exist
[ERROR] /Users/kroe761/Documents/workspace/ecom/src/main/Java/com/company/automation/ecom/HelperMethods.Java:[16,43] package com.company.automation.ecom.pages does not exist
[ERROR] /Users/kroe761/Documents/workspace/ecom/src/main/Java/com/company/automation/ecom/HelperMethods.Java:[110,13] cannot find symbol
[ERROR] symbol: class Header
[ERROR] location: class com.company.automation.ecom.HelperMethods
[ERROR] /Users/kroe761/Documents/workspace/ecom/src/main/Java/com/company/automation/ecom/HelperMethods.Java:[110,62] cannot find symbol
[ERROR] symbol: class Header
[ERROR] location: class com.company.automation.ecom.HelperMethods
[ERROR] /Users/kroe761/Documents/workspace/ecom/src/main/Java/com/company/automation/ecom/HelperMethods.Java:[113,9] cannot find symbol
[ERROR] symbol: class SignIn
[ERROR] location: class com.company.automation.ecom.HelperMethods
[ERROR] /Users/kroe761/Documents/workspace/ecom/src/main/Java/com/company/automation/ecom/HelperMethods.Java:[113,58] cannot find symbol
[ERROR] symbol: class SignIn
[ERROR] location: class com.company.automation.ecom.HelperMethods
Je sais que les fichiers sont présents. Lorsque je lance la suite TestNG, tout fonctionne sans problème. De plus, quand je lance quel Java -version
je reçois ceci:
Java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
Je sais que c'est un problème de configuration quelque part, mais je ne connais pas suffisamment la configuration maven/Java pour le résoudre. Les fichiers dont Maven me dit qu'ils sont partis sont mes fichiers, et ils sont absolument présents. Voici mon fichier pom.xml:
<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>
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<properties>
<property>
<name>listener</name>
<value>com.kirklands.automation.ecom.retry.MyTestListenerAdapter</value>
</property>
</properties>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<groupId>com.kirklands.automation</groupId>
<artifactId>ecom</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>ecom</name>
<url>http://maven.Apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.Selenium</groupId>
<artifactId>Selenium-Java</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>1.5.0</version>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
</project>
Structure du projet:
src/main/Java
{package com.company.automation.ecom}
CreditCard.Java
HelperMethods.Java
src/test/Java
{package com.company.automation.ecom.pages}
Header.Java
SignIn.Java
(etc...)
{package com.company.automation.ecom.tests}
HeaderTests.Java
(etc...)
Votre problème semble apparaître car vous essayez d'accéder à partir de votre:
src/main/Java
Sources de test - qui se trouvent:
src/test/Java
Voici l'extrait exact du journal que vous avez posté:
/Users/kroe761/Documents/workspace/ecom/src/main/Java/com/company/automation/ecom/HelperMethods.Java:[15,43] package inexistant
Cela fonctionnera d'un autre côté: si vous utiliserez vos sources (src/main/Java
) à partir de la portée du test (src/test/Java
).
Maven a son propre cycle de vie .
Il a une conséquence stricte:
compile
- compile le code source du projettest
- teste le code source compilé en utilisant un framework de tests unitaires approprié. Ces tests ne devraient pas exiger que le code soit empaqueté ou déployéEt pendant compile
, vous ne pouvez compiler que vos sources. Cependant, cela dépend de vos tests (paquet de pages), qui ne peuvent pas être compilés pour le moment, car ils ne seront compilés qu’à la phase test
.
Ainsi la compilation échoue.
Pour résoudre ce problème, essayez de changer un peu la structure de votre projet:
src/main/Java
{package com.company.automation.ecom}
CreditCard.Java
HelperMethods.Java
{package com.company.automation.ecom.pages}
Header.Java
SignIn.Java
(etc...)
src/test/Java
{package com.company.automation.ecom.tests}
HeaderTests.Java
Et vos tests doivent utiliser des sources (principales et pages) sans aucun problème.
Vous devez d'abord exécuter la commande maven clean install
.
Cette commande compilera votre package missing
et exécutera même les tests.
UPDATE: Vous devriez changer votre paquet com.company.automation.ecom.pages
dans votre dossier src/main/Java
. afin qu'il puisse être compilé dans la phase maven compile
.