我正在研究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