在springboot应用程序中,我有单元和集成测试。我想要的是控制运行哪组测试以及何时运行。我的意思是运行单元 OR 集成测试,但不是两者。
我知道这可以通过maven,但我想知道是否可以使用 Spring Profile 来实现这一目标。我的意思是,在一个配置文件中标记单元测试,在另一个配置文件中标记集成测试。在运行时,我提供了一个配置文件,它只触发那些属于该配置文件的测试。
答案 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.properties
和application-it.properties
,每个都有其特殊性。
然后,您应根据其性质为每个测试类指定@ActiveProfiles
。
对于集成测试类,例如:
@ActiveProfiles("it")
public class FooIntegrationTest {}
@ActiveProfiles("it")
public class BarIntegrationTest {}
对于单元测试类,例如:
@ActiveProfiles("ut")
public class FooTest {}
@ActiveProfiles("ut")
public class BarTest {}