2016-07-15 30 views
0

我的目錄結構如下所示: 的src/integrationTest/JAVA 的src/test/java下 的src/main/java的配置Maven的故障保護,插件來找到正確的集成測試

我試圖讓故障安全到拿起集成測試,但沒有按照我的意願去做。

我已經試過這樣:

<plugin> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <version>2.17</version> 
    <executions> 
     <execution> 
      <goals> 
       <goal>integration-test</goal> 
       <goal>verify</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <testSourceDirectory>src/integrationTest/java</testSourceDirectory> 
     <testClassesDirectory>${project.build.directory}/it-classes</testClassesDirectory> 
    </configuration> 
</plugin> 

這:

<plugin> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <version>2.17</version> 
    <executions> 
     <execution> 
      <goals> 
       <goal>integration-test</goal> 
       <goal>verify</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <includes> 
      <include>src/integrationTest/**/*.java</include> 
     </includes> 
    </configuration> 
</plugin> 

無濟於事;故障安全不會找到要運行的測試。

我已經能夠使用build-helper-maven插件添加一個測試源目錄,然後failafe運行測試。

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>build-helper-maven-plugin</artifactId> 
    <version>1.9.1</version> 
    <executions> 
     <execution> 
      <id>add-integration-test-source-as-test-sources</id> 
      <phase>generate-test-sources</phase> 
      <goals> 
       <goal>add-test-source</goal> 
      </goals> 
      <configuration> 
       <sources> 
        <source>src/integrationTest/java</source> 
       </sources> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

但是,現在的問題是,surefire現在也將測試作爲單元測試運行。另外,當故障安全應該能夠找到測試時,似乎沒有必要使用另一個插件;我寧願不需要使用build-helper maven插件並配置surefire來排除該路徑。

我在做什麼錯?

回答

0

默認情況下,故障保護僅配置爲include IT * .java,* IT.java或* ITCase.java。與此同時,僅編譯src/test/java的測試源。您需要修改這兩種行爲。

  1. 使用build-helper-maven-plugin添加src/integationTest/java作爲測試源maven-compiler-plugin自動拾取。 (你已經在你的最後一次嘗試已經做到了這一點。)

  2. 直接maven-surefire-plugin排除你的集成測試(見下面的例子),或者只包括非集成測試(見default includes)。

  3. 直接maven-failsafe-plugin只包含您的集成測試而不是默認包含。


<plugin> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.17</version> 
    <configuration> 
    <excludes> 
     <exclude>**/*Stuff.java</exclude> 
    </excludes> 
    </configuration> 
</plugin> 
<plugin> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <version>2.17</version> 
    <executions> 
    <execution> 
     <goals> 
     <goal>integration-test</goal> 
     <goal>verify</goal> 
     </goals> 
    </execution> 
    </executions> 
    <configuration> 
    <includes> 
     <include>**/*Stuff.java</include> 
    </includes> 
    </configuration> 
</plugin> 

在使用testClassesDirectory還可能限制每個測試插件的範圍內工作的事實,但你必須做出改變,以maven-compiler-plugin輸出類不同的文件夾,可能分裂它test-compile執行成兩個,所以也許這是不值得的努力。

+0

當然,最小配置慣例是將你的集成測試類保存在src/test/java'中,並根據這些命名模式重新命名它們:'IT * .java','* IT.java'或'* ITCase .java'。 –

+0

以上似乎沒有工作:( 我同意wrt命名約定;但目前在這種情況下不可能 – neuronotic

+0

請驗證您在該文件夾中有'.class'文件通常'maven- compiler-plugin'在'test-compile'階段生成它們,但是它適用於'src/test/java'文件夾。如果你使用的是不同的文件夾,我認爲你需要添加一個額外的編譯步驟。 –

相關問題