弹簧 maven - 运行特定测试(通过注释或 maven 配置文件)
使用Spring maven上下文,我想基于maven配置文件运行特定的测试。我希望有一种简单的方法来标记测试组。如果可能的话,我想使用注释。有哪些选项,例如 maven 命令行参数、maven 配置文件规范等。
假设我有以下测试:
例:
// annotation("integration")
public class GeopointFormatterTest {
@Test
public void testIntegration1() { ... }
@Test
public void testIntegration2() { ... }
当然,像@Profile(用于创建bean)和@ActiveProfile(用于选择用于创建bean的特定配置文件)这样的注释不能用于选择测试。所有测试都只针对如下语句运行:
mvn clean install -Pdevelopment
mvn clean install -Pdevelopment -Dspring.profiles.active=acceptance
mvn clean install -Pdevelopment -Dspring.profiles.active=integration
根据建议,我也使用了@IfProfileValue。这是根据系统属性值选择测试的好方法。系统属性值可以被 CustomProfileValueSource 类覆盖,如:@ProfileValueSourceConfiguration(CustomProfileValueSource.class)
编辑和备选
下面的GREAT答案侧重于JUnit的@Category机制。谢谢大家!
一种不同的方法是通过以下步骤:[1]在maven配置文件中设置一个属性,[2]使用该属性通过标准的surefire测试插件跳过测试。
[1] 通过配置文件设置属性:
<profiles>
<profile>
<id>integrationtests</id>
<properties>
<integration.skip>false</integration.skip>
<acceptance.skip>true</acceptance.skip>
</properties>
</profile>
... other profiles
[2] 使用 surefire 测试插件中的属性跳过测试。
<build>
<plugins>
<plugin>
<!-- Run the integration test-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.plugin.version}</version>
<configuration>
<skipTests>${acceptance.skip}</skipTests>
从 maven 开始:mvn 全新安装 – Pintegrationtests