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);
}
}
至於你提到'測試運行:1,故障:1'這意味着,你通常會看到'BUILD FAILURE'最後還有關於失敗的單元測試的適當消息。你的單元測試會失敗,根據lifecyle maven的說法,如果單元測試失敗,繼續進行集成測試是沒有意義的。所以你必須首先解決你的單元測試,這意味着'mvn clean package'應該產生'BUILD SUCCESS'消息。之後,您可以嘗試「mvn驗證」。 – khmarbaise
謝謝,但這不起作用。 'mvn clean package'產生'BUILD FAILURE';它似乎也在運行測試。不過,如果單元測試失敗,我不理解您關於不運行集成測試的評論。 「failsafe」的全部不是將整合測試與單元測試分開,以便您可以分別運行它們而不會相互影響(除了編譯錯誤)? – johnrl
'mvn clean package'將運行單元測試,但不會執行集成測試,如果您遵循瞭如此的命名約定。也許你可以顯示完整的pom文件,或者將它放在github上或類似的東西上,以便看起來更加深沉。如果你運行'mvn verify',整個生命週期將通過站點'compile','test','package','integration-test'運行。 – khmarbaise