我目前正在开发一个在所有模块中广泛使用JUnit4的项目。我们使用Maven2来构建项目,使用Hudson进行持续集成。该项目是在Java 1.5下构建和运行的。
我们最近添加了大量有时需要的单元测试,但不希望在构建过程中运行(但同一项目中的其他单元测试)。
我想知道是否有某种注释可以应用于测试,或者某些可以对Maven进行的配置会忽略生成在特定包或某个测试类中的单元测试?
可能只是将这些特定测试放在一个通过main运行的普通类中,但这并不理想。
感谢您的建议
答案 0 :(得分:17)
您可以配置maven-surefire-plugin。
例如:
<project>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4.2</version>
<configuration>
<excludes>
<exclude>**/TestCircle.java</exclude>
<exclude>**/TestSquare.java</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
修改强>
另一种解决方案是定义profiles,其中将运行所有测试,例如由哈德森。在开发模式中,您可以使用所有测试的子集来加速开发(或者所有测试可能都在默认配置文件中,在开发配置文件中选择测试 - 因此您需要使用-PprofileName
属性运行maven)。这个例子更适合需要loger运行的集成测试。
答案 1 :(得分:8)
有一个“忽略”注释,但它是手动工作来添加它们,不确定是否有帮助。
它可以用于测试方法或整个类
@Ignore("not ready yet") @Test public void testSomething() {...
或
@Ignore public class SomeTest {
@Test public void testSomething() {...
}
[]]
答案 2 :(得分:4)
尝试JUnit假设,这似乎是自4.4以来的
假设您可以在运行时检测是否应该运行测试(通过定义,属性等),这将允许您保持一个漂亮的干净测试套件。
答案 3 :(得分:3)
我从未尝试过,但您是否可以将其他测试放在不同的源文件夹中,并根据您的构建目标配置构建脚本以包含或排除它?
答案 4 :(得分:1)
答案 5 :(得分:1)
Maven的Surefire插件:Inclusions and Exclusions of Tests
答案 6 :(得分:1)
JUnit 4.7我相信支持这种事情的“规则”(4.7之前我认为你可以使用自定义Runners来检查环境变量)。
或者您可以查看构建系统的includes / exludes标记。
答案 7 :(得分:-2)
您需要将以下内容添加到POM.xml
中<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
查看此网址: http://maven.apache.org/surefire/maven-surefire-plugin/examples/skipping-test.html
- Abhijit Das