Java 从特拉维斯排除试验
我正在做一件事。我们使用Travis进行持续集成 一些更复杂的JUnit测试目前没有在Travis环境中通过,尽管它们在本地通过Java 从特拉维斯排除试验,java,maven,testing,continuous-integration,tycho,Java,Maven,Testing,Continuous Integration,Tycho,我正在做一件事。我们使用Travis进行持续集成 一些更复杂的JUnit测试目前没有在Travis环境中通过,尽管它们在本地通过 问题:是否有一种快速简便的方法将特定的测试类或方法标记为“不要在Travis上运行”因此,我们可以在我找出如何修复这些测试的Travis环境的同时继续前进?一个可能的解决方案是向相关项目添加一个,并从其测试目标执行中配置这些测试的 例如: <profiles> <profile> <id>trasis<
问题:是否有一种快速简便的方法将特定的测试类或方法标记为“不要在Travis上运行”因此,我们可以在我找出如何修复这些测试的Travis环境的同时继续前进?一个可能的解决方案是向相关项目添加一个,并从其测试目标执行中配置这些测试的 例如:
<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>
这将:
- 激活上面的配置文件
- 为Surefire插件应用自定义配置
- 从测试阶段排除已配置的测试(模式)
或者,特别是如果无法更改相关pom文件,可以使用选项和精心编制的正则表达式排除测试(和方法): 由于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.*]
”
我会问为什么这些测试不在特拉维斯身上运行?所以你在一个测试中做了一些你不应该做的事情,因为你说它们在本地运行,但在travis上它们不…我会深入研究这些测试为什么它们不在travis上运行。。
mvn clean install -Ptrasis
mvn clean install -Dtest=*Test,!FromThisClass#excludeThisMethod