3 回答
TA贡献1811条经验 获得超5个赞
从 Gradle 4.6(我相信)开始,有原生的 JUnit 5 支持。您可以只包含 JUnit5,如下所示:
dependencies {
testCompile "org.junit.jupiter:junit-jupiter-api:5.2.0"
testCompile "org.junit.jupiter:junit-jupiter-params:5.2.0"
testRuntime "org.junit.jupiter:junit-jupiter-engine:5.2.0"
}
您还需要:
test {
useJUnitPlatform()
}
JUnit 4 和 5 使用不同的包名,因此它们可以共存于同一个项目中。许多注释是相同的(@Test等),因此请确保将它们包含在org.junit.jupiter.api包中。
TA贡献1752条经验 获得超4个赞
对其他贡献者提到的一些补充说明:
使用 Spring Boot > 2.4.0
如果您使用的是 Spring Boot > 2.4.0
,那么您无需执行任何操作即可使用 JUnit 5 Jupiter,因为该spring-boot-starter-test
库不再包含 Vintage-engine 依赖项(它可传递地包含 JUnit 4),只需将 starter 依赖项包含到项目中即可你可以走了。使用useJUnitPlatform()
的摇篮配置。
使用 2.4.0 > Spring Boot > 2.2.0
如果您使用早期版本,我建议您使用高于 的版本2.2.0.RELEASE
,这是 Spring 团队在spring-boot-starter-test
默认情况下添加对 JUnit 5 Jupiter 的支持的地方。
在这些版本中,该库还包含 Vintage Engine 依赖项,可用于使用 JUnit 5 Jupiter 平台运行 JUnit 4 测试。如果您不需要执行 JUnit 4 测试,那么 spring 团队建议排除org.junit.vintage:junit-vintage-engine
(不仅仅是junit
如描述中所示):
testCompile('org.springframework.boot:spring-boot-starter-test') { exclude group: 'org.junit.vintage'}
useJUnitPlatform()
当然,您还需要在这里配置指令。
TA贡献1801条经验 获得超8个赞
这是使用implementation而不是compile。
test {
useJUnitPlatform()
}
dependencies {
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'junit', module: 'junit'
}
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.4.2'
testImplementation 'org.junit.jupiter:junit-jupiter-params:5.4.2'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.4.2'
}
更新 2020-10-29
在我们的 Spring Boot 2.3 项目中,我们不再需要这个片段。默认情况下,它已经在使用 JUnit 5。
添加回答
举报