web-dev-qa-db-fra.com

Erreur de compilation Maven [le package org.testng.annotations n'existe pas]

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 -->
16
user3060386

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):

  1. Ouvrez le fichier pom.xml.
  2. Accédez à l'onglet "Dépendances".
  3. Sélectionnez le package "testng" et cliquez sur "Propriétés ..."
  4. Sur l'écran ouvert, changez l'option "Scope" en "compile" et cliquez sur "OK" pour l'enregistrer.
  5. Essayez de reconstruire votre projet avec des objectifs de "test de compilation".
54
Pavik

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>
20
neoerol

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>
9
Anuj Teotia

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>
5
Chethan Shetty
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>
5
Sanyasi Das

Assurez-vous que vos tests sont dans "src/test/Java". Cela résoudra ce problème

0
Yogesh Dawkhar

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.

0
Rainier Ramos
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.8.8</version>
        <scope>compile</scope>
    </dependency>
0
Rohit Pol