2013-05-16 74 views
2

當我嘗試使用maven編譯多個源目錄時,我正在獲取軟件包org.testng.annotations不存在錯誤。我正在運行webdriver測試,並且我所有的測試都導入了導入org.testng.annotations。我使用的IntelliJ 12和我的src目錄看起來是這樣的 -如何將多個源目錄添加到pom.xml

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錯誤?

+1

我看過這裏,但它並沒有解決我的問題 - http://stackoverflow.com/questions/9752972/how-to-add-an-extra-source-directory-for-maven-to-compile -and-include-in-the-bui – Riv

+0

你可以發佈完整的pom文件和項目的完整目錄結構嗎? – khmarbaise

回答

1

的Maven項目的默認佈局如下:

src 
    main 
     java 
    test 
     java 
的src/main/JAVA/目錄軟件包名稱中

爲你高效的Java類的源文件添加應該。在src/test/java/的單元測試java類源文件的包名稱。

而且您應該不是如果您沒有真正充分的理由這樣做,請更改佈局。

此外,重新定義Maven默認值(target,target/class,target/test-classes等)的默認值違背了配置範例上的約定。

請注意,您需要按照命名convention for unit tests,這意味着你的單元測試應該被命名爲如下所示:

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

但在你的情況下,我認爲我們正在談論的集成測試,這意味着你需要使用以下naming convention

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

除此之外,你現在應該在Maven的單元測試將由maven-surefire-plugin而集成測試執行將由執行。

+0

@ khmarbaise--感謝您的輸入。上面的方法爲我做了一個乾淨的編譯(mvn clean compile),但是當我使用此命令運行測試時,mvn clean test -DsuiteFile = resources/test-suites/audioSuite.xml它會引發包2不存在的錯誤,這是一個包在第一個源目錄中。有任何想法嗎? – Riv

0

爲了解決testng註釋未找到的錯誤,我最終將基類從src/main/java/package1/baseclass.java移動到了src/main/test/package1/baseclass.java,並且解決了testng註釋錯誤

相關問題