gpt4 book ai didi

java - Spring maven - 运行特定测试(通过注释或 maven 配置文件)

转载 作者:搜寻专家 更新时间:2023-10-30 19:42:28 24 4
gpt4 key购买 nike

使用 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 clean install –Pintegrationtests

最佳答案

看看junit categories .

您将使用特定类别注释标记您的测试

public interface FastTests { /* category marker */ }
public interface SlowTests { /* category marker */ }

@Category(SlowTests.class)
public class A {
@Test public void a() {}
}

然后像这样组成一个套件

@RunWith(Categories.class)
@IncludeCategory({FastTests.class})
@SuiteClasses({A.class, B.class})
public static class FastTestSuite {
//
}

然后用

运行它
mvn -Dtest=FastTestSuite test

另请注意,如果您不想在套件类中手动指定您的单元测试用例类,您还可以使用ClasspathSuite 的帮助。然后根据类别进行限制。

关于java - Spring maven - 运行特定测试(通过注释或 maven 配置文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47162013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com