2014-01-15 44 views
1

我試圖讓Maven故障安全插件運行我的集成測試,但即使我已按照指南https://maven.apache.org/surefire/maven-failsafe-plugin/usage.html它不起作用。Maven故障安全:遵循指南,但不運行「驗證」

我的Maven項目(MvnTest)看起來像這樣(源文件如下圖):

pom.xml 
-src 
    -main 
    -java 
    -resources 
-test 
    -java 
    SomeIT.java 
    SomeTest.java 

MVN測試正常運行僅在SomeTest.java使用SUNFIRE插件測試。輸出:

... 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ MvnTest --- 
[INFO] Surefire report directory: ... 
... 
Running SomeTest 
Tests run: 1, Failures: 1 

然而,MVN驗證命令的輸出完全一樣的東西MVN測試這是錯誤的方法有兩種:1)它調用SUNFIRE,和2)它運行在SomeTest測試。 java但應該只運行在SomeIT.java(https://maven.apache.org/surefire/maven-failsafe-plugin/examples/inclusion-exclusion.html

我相信我已經按照正確使用故障安全的指南,但顯然我一定錯過了一些東西。我做錯了什麼?

源文件

的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"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>MvnTest</groupId> 
    <artifactId>MvnTest</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-failsafe-plugin</artifactId> 
       <version>2.16</version> 
       <executions> 
        <execution> 
         <goals> 
          <goal>integration-test</goal> 
          <goal>verify</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.11</version> 
     </dependency> 
    </dependencies> 
</project> 

SomeIT.java:

import org.junit.Test; 
import static org.junit.Assert.assertTrue; 

public class SomeIT { 
    @Test 
    public void test2() { 
     assertTrue(4 == 3); 
    } 
} 

SomeTest.java:

import org.junit.Test; 
import static org.junit.Assert.assertTrue; 

public class SomeTest { 
    @Test 
    public void test1() { 
     assertTrue(2 == 3); 
    } 
} 
+0

至於你提到'測試運行:1,故障:1'這意味着,你通常會看到'BUILD FAILURE'最後還有關於失敗的單元測試的適當消息。你的單元測試會失敗,根據lifecyle maven的說法,如果單元測試失敗,繼續進行集成測試是沒有意義的。所以你必須首先解決你的單元測試,這意味着'mvn clean package'應該產生'BUILD SUCCESS'消息。之後,您可以嘗試「mvn驗證」。 – khmarbaise

+0

謝謝,但這不起作用。 'mvn clean package'產生'BUILD FAILURE';它似乎也在運行測試。不過,如果單元測試失敗,我不理解您關於不運行集成測試的評論。 「failsafe」的全部不是將整合測試與單元測試分開,以便您可以分別運行它們而不會相互影響(除了編譯錯誤)? – johnrl

+0

'mvn clean package'將運行單元測試,但不會執行集成測試,如果您遵循瞭如此的命名約定。也許你可以顯示完整的pom文件,或者將它放在github上或類似的東西上,以便看起來更加深沉。如果你運行'mvn verify',整個生命週期將通過站點'compile','test','package','integration-test'運行。 – khmarbaise

回答

0

添加含UDE中在你的pom.xml節Maven的故障保護,插件

的樣子:

​​