web-dev-qa-db-ja.com

Mavenコンパイルエラー[パッケージorg.testng.annotationsは存在しません]

私はMavenが初めてなので、Mavenを使用してテストクラスを実行したいと思います。 testng.xmlを生成し、POM.xmlファイルも作成しました。しかし、mvn install、このエラーが生成されます:

[パッケージorg.testng.annotationsは存在しません]

これについてアドバイスしてください。

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

同様の問題があります。その理由は、「コンパイル」が必要なときに「testng」依存関係の「testng」オプションが「test」に設定されていたためです。

修正方法(注、Eclipseを使用しました):

  1. pom.xmlファイルを開きます。
  2. Dependencies」タブに移動します。
  3. testng」パッケージを選択し、「Properties ...」をクリックします
  4. 開いた画面で「Scope」オプションを「compile」に変更し、「OK」をクリックして保存します。
  5. 「コンパイルテスト」の目標でプロジェクトを再度ビルドしてみてください。
50
Pavik

テスト範囲testng依存関係を削除し、コンパイルを追加します

<dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.1.1</version>
        <scope>compile</scope>
    </dependency>
18
neoerol

Pom.xmlファイルには、testngのスコープがtestとしてあります。

<dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.9.13.6</version>
            <scope>test</scope>
</dependency>

スコープをcompileに置き換えます

<dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.9.13.6</version>
            <scope>compile</scope>
</dependency>
9
Anuj Teotia

私もこの問題に直面し、同じ解決策を得ました。

Pom.xmlファイルでスコープを削除すると、正常に機能するはずです。

以下のpom.xmlのコードに従って、scopeタグを削除します。

TestngのMaven依存関係をインポートしましたが、XMLファイルにスコープタグを追加すると、TestngとしてではなくJUnitアノテーションとして扱われます。したがって、スコープタグを削除すると、私の@TestアノテーションはTestngアノテーションとして扱われました。

<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

テストが「src/test/Java」にあることを確認してください。この問題を解決します

0
Yogesh Dawkhar

Webアプリを構築していて、WEB-INF/libに含めたくない場合は、testngのスコープを "provided"に設定します。

0
Rainier Ramos