我正在研究Maven based Java open source project hosted on Github。我們使用Travis進行持續集成。從Travis中排除測試
一些更復雜的JUnit測試目前不通過Travis環境,儘管它們通過本地傳遞。
問題:是否有一個快速簡便的方法來標記特定的測試類或方法爲「不要在特拉維斯運行」所以當我弄清楚如何解決這些測試的特拉維斯環境,我們能夠向前邁進?
我正在研究Maven based Java open source project hosted on Github。我們使用Travis進行持續集成。從Travis中排除測試
一些更復雜的JUnit測試目前不通過Travis環境,儘管它們通過本地傳遞。
問題:是否有一個快速簡便的方法來標記特定的測試類或方法爲「不要在特拉維斯運行」所以當我弄清楚如何解決這些測試的特拉維斯環境,我們能夠向前邁進?
可能的解決方案是將maven profile添加到相關項目中,並將maven-surefire-plugin
配置爲exclude這些測試從其測試目標執行中。
一個例子是:
<profiles>
<profile>
<id>trasis</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<excludes>
<!-- exclude tests here -->
<exclude>**/TestCircle.java</exclude>
<exclude>**/TestSquare.java</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
然後你trasis構建應該運行
mvn clean install -Ptrasis
這將:
這個資料配置測試(模式),則可以通過本地忽略建立同時仍然活躍Trasis。一旦問題得到解決,它就可以從trasis配置和pom文件本身完全刪除。
另外,特別是如果你不能改變有關POM文件,您可以排除使用test
選項和精心設計的正則表達式測試(和方法):
由於2.19複雜的語法支撐在一個參數(JUnit 4中,的JUnit 4.7+,TestNG的):
「-Dtest=???Test, !Unstable*, pkg/**/Ci*leTest.java, *Test#test*One+testTwo?????, #fast*+slowTest
」
「-Dtest=Basic*, !%regex[.*.Unstable.*], !%regex[.*.MyTest.class#one.*|two.*], %regex[#fast.*|slow.*]
」
mvn clean install -Dtest=*Test,!FromThisClass#excludeThisMethod
我會問爲什麼這些測試不能在travis上運行?所以你在測試中做了一些你不應該做的事情,因爲你說它們在本地運行,但是在Travis中它們不運行......我會深入研究這些測試,爲什麼它們不能運行在travis上。 。 – khmarbaise