2

Maven を使用して複数のソース ディレクトリをコンパイルしようとすると、パッケージ org.testng.annotations が存在しないというエラーが発生します。Webdriver テストを実行していますが、すべてのテストで import org.testng.annotations がインポートされています。IntelliJ 12 を使用しており、src ディレクトリは次のようになります。

ソース

  -->main
     --> java
        --> package1
            --> file1.java
        --> package2
            --> file2.java
  -->test
     --> java
        --> package1
           --> file1.java
           --> file2.java
        --> package2
        --> package3
        --> package4
        --> package5
        --> package6

pom.xmlで使用しているビルドプラグインは次のようになります-

<?xml version="1.0" encoding="UTF-8"?>
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">

<parent>
    <artifactId>core-xxxxx</artifactId>
    <groupId>core-xxxxx</groupId>
    <version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>tests</artifactId>
   <dependencies>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-api</artifactId>
        <version>2.32.0</version>
    </dependency>
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.8.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>
    <build>
       <directory>target</directory>
    <outputDirectory>target/classes</outputDirectory>
    <testOutputDirectory>target/test-classes</testOutputDirectory>
 <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
                <execution>
                    <id>add-source</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>add-source</goal>
                    </goals>
                    <configuration>

                        <sources>
                            <source>src/main/java</source>
                            <source>src/test/java</source>
                        </sources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
</plugins>
</build>
</project>

org.testng.annotations not found エラーが発生するのはなぜですか?

4

2 に答える 2

1

Maven プロジェクトのデフォルトのレイアウトは次のとおりです。

src
   main
      java
   test
      java

src/main/java/ディレクトリ内に、生産的な Java クラス ソース ファイルのパッケージ名を追加する必要があります。src/test/java/内には、単体テストの Java クラス ソース ファイルのパッケージ名が含まれています。

また、本当に正当な理由がない限り、レイアウトを変更するべきではありません。

さらに、Maven のデフォルト (ターゲット、ターゲット/クラス、ターゲット/テストクラスなど) のデフォルトを再定義することは、構成パラダイムに関する規則に反します。

単体テストの命名規則に従う必要があることに注意してください。つまり、単体テストには次のような名前を付ける必要があります。

<includes>
 <include>**/*Test*.java</include>
 <include>**/*Test.java</include>
 <include>**/*TestCase.java</include>
</includes>

しかし、あなたの場合、統合テストについて話していると思います。つまり、次の命名規則を使用する必要があります

<includes>
 <include>**/IT*.java</include>
 <include>**/*IT.java</include>
 <include>**/*ITCase.java</include>
</includes>

それとは別に、 Maven の単体テストは maven-surefire-pluginによって実行され、統合テストは maven-failsafe-plugin によって実行されるはずです

于 2013-05-16T05:22:55.287 に答える
0

testng アノテーションが見つからないというエラーを回避するために、基本クラスを src/main/java/package1/baseclass.java から src/main/test/package1/baseclass.java に移動し、testng アノテーション エラーが解決されました。

于 2013-05-22T00:08:28.897 に答える