Springboot配置文件并运行一些测试

时间:2018-01-25 14:59:49

标签: spring unit-testing spring-boot spring-boot-test spring-profiles

在springboot应用程序中,我有单元和集成测试。我想要的是控制运行哪组测试以及何时运行。我的意思是运行单元 OR 集成测试,不是两者。

我知道这可以通过maven,但我想知道是否可以使用 Spring Profile 来实现这一目标。我的意思是,在一个配置文件中标记单元测试,在另一个配置文件中标记集成测试。在运行时,我提供了一个配置文件,它只触发那些属于该配置文件的测试。

2 个答案:

答案 0 :(得分:0)

您可以通过build.gradle的以下添加来实现所需的行为:

test {
    useJUnitPlatform()
    exclude "**/*IT*", "**/*IntTest*"
    testLogging {
        events 'FAILED', 'SKIPPED'
    }
}

task integrationTest(type: Test) {
    useJUnitPlatform()
    description = "Execute integration tests."
    group = "verification"
    include "**/*IT*", "**/*IntTest*"
    testLogging {
        events 'FAILED', 'SKIPPED'
    }
}
check.dependsOn integrationTest

这将在验证任务下创建 test integrationTest 。现在,您可以通过运行 check 任务来运行一个或另一个。集成测试的类名称中必须包含IntTest或IT。

此外,不要忘记添加以下依赖项:

dependencies {
    testImplementation "org.junit.jupiter:junit-jupiter-engine:5.3.2"
    testImplementation "junit:junit:4.12"
}

答案 1 :(得分:-1)

是的,您可以通过Spring配置文件对这两种测试进行分组 如果要运行其中一个,则必须创建特定于单元测试的application.properties和另一个特定于集成测试的测试。
例如application-ut.propertiesapplication-it.properties,每个都有其特殊性。

然后,您应根据其性质为每个测试类指定@ActiveProfiles

对于集成测试类,例如:

@ActiveProfiles("it")
public class FooIntegrationTest {}

@ActiveProfiles("it")
public class BarIntegrationTest {}

对于单元测试类,例如:

@ActiveProfiles("ut")
public class FooTest {}

@ActiveProfiles("ut")
public class BarTest {}