Je suis assez nouveau sur maven et je veux exécuter mes classes de test en utilisant maven. J'ai généré le testng.xml et j'ai également créé le fichier POM.xml. Mais lorsque vous exécutez le mvn install
, il génère cette erreur:
[le package org.testng.annotations n'existe pas]
s'il vous plaît des conseils à ce sujet.
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>
<groupId>com.TestNG</groupId>
<artifactId>TestNG</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.1.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
</project>
testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" verbose="1" preserve-order="true">
<test name="Test">
<packages>
<package name="com.testngTest2" />
<package name="com.testngTest" />
</packages>
</test> <!-- Test -->
</suite> <!-- Suite -->
J'ai un problème similaire. La raison en était l'option "Scope" de la dépendance "testng" définie sur "test" lorsque "compiler" était nécessaire.
Comment je l'ai corrigé (notez, j'ai utilisé Eclipse):
supprimer la dépendance de testng de portée de test et ajouter la compilation
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.1.1</version>
<scope>compile</scope>
</dependency>
Dans votre fichier pom.xml, vous avez la portée de testng comme test
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.9.13.6</version>
<scope>test</scope>
</dependency>
Remplacez la portée par compiler
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.9.13.6</version>
<scope>compile</scope>
</dependency>
Même moi, j'avais fait face à ce problème et obtenu une solution pour le même.
Dans votre fichier pom.xml, supprimez la portée et cela devrait fonctionner correctement.
Selon le code ci-dessous dans pom.xml, supprimez la balise scope.
Même si nous avons importé la dépendance maven pour Testng, lorsque vous ajoutez une balise scope dans un fichier XML, elle est traitée comme une annotation JUnit et non comme Testng. Ainsi, lorsque j'ai supprimé la balise scope, My @Test Annotation a été traitée comme Testng Annotation.
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.7</version>
**<scope>test</scope>** //Remove this line and compile maven
</dependency>
Beleive me below wil work replace "test" to "compile" in scope
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.9.13.6</version>
<scope>compile</scope>
</dependency>
Assurez-vous que vos tests sont dans "src/test/Java". Cela résoudra ce problème
Définissez la portée de testng sur "fourni" si vous créez une application Web et que vous ne souhaitez pas qu'elle soit incluse dans WEB-INF/lib.
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.8</version>
<scope>compile</scope>
</dependency>