使用Spring maven上下文,我想基于maven配置文件运行特定的测试.我想有一个标记测试组的简单方法.如果可能,我想使用注释.有哪些选项,如maven命令行参数,maven配置文件规范等.
说我有以下测试:
例:
// annotation("integration")
public class GeopointFormatterTest {
@Test
public void testIntegration1() { ... }
@Test
public void testIntegration2() { ... }
Run Code Online (Sandbox Code Playgroud)
当然,注释如@Profile(用于创建bean)和@ActiveProfile(用于选择创建bean的特定配置文件)不能用于选择测试.所有测试只针对以下语句运行:
mvn clean install -Pdevelopment
mvn clean install -Pdevelopment -Dspring.profiles.active = accepted
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
Run Code Online (Sandbox Code Playgroud)
[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>
Run Code Online (Sandbox Code Playgroud)
从maven开始:mvn clean install -Pintegrationtests
eis*_*eis 15
看看junit类别.
您可以使用特定的类别注释标记测试
public interface FastTests { /* category marker */ }
public interface SlowTests { /* category marker */ }
@Category(SlowTests.class)
public class A {
@Test public void a() {}
}
Run Code Online (Sandbox Code Playgroud)
然后组成一个套房
@RunWith(Categories.class)
@IncludeCategory({FastTests.class})
@SuiteClasses({A.class, B.class})
public static class FastTestSuite {
//
}
Run Code Online (Sandbox Code Playgroud)
然后运行它
mvn -Dtest=FastTestSuite test
Run Code Online (Sandbox Code Playgroud)
另请注意,如果您不想在套件类中手动指定单元测试用例类,则还可以使用ClasspathSuite的帮助,然后根据类别进行限制.
您可能需要使用@Category注释对测试进行分类。此处提供的Surefire文档中提供了一个完整示例- 搜索字符串Using JUnit Categories。
假设您已相应地对测试进行分类,您现在可以在 Maven 构建中设置一个或多个配置文件,这将根据类别触发这些测试
<profiles>
<profile>
<id>slow-tests</id>
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.11</version>
<configuration>
<groups>com.mycompany.SlowTests</groups>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>fast-tests</id>
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.11</version>
<configuration>
<groups>com.mycompany.FastTests</groups>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)
运行测试时,您可以在命令行上指定一个或多个配置文件。
mvn test -Pslow-tests,fast-tests
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4283 次 |
| 最近记录: |