什么是 junit-bom 和 junit 平台,我应该将它们包含在 gradle 依赖项中吗?
What is junit-bom and junit platform for, and should I include them in gradle dependencies?
我正在阅读 Junit 5 User Guide. It leads me to a JUnit 5 Jupiter Gradle Sample,这是将 Junit 5 与 Gradle 一起使用的最简单示例。在 build.gradle
文件中,有 2 个依赖项,junit-jupiter
和 junit-bom
。而在test
任务中,它也调用了useJUnitPlatform()
函数。
plugins {
id 'java'
}
repositories {
mavenCentral()
}
dependencies {
testImplementation(platform('org.junit:junit-bom:5.7.1'))
testImplementation('org.junit.jupiter:junit-jupiter')
}
test {
useJUnitPlatform()
testLogging {
events "passed", "skipped", "failed"
}
}
据我了解,junit-jupiter
是聚合神器,拉取了以下3个神器,
- junit-jupiter-api(编译依赖)
- junit-jupiter-engine(运行时依赖)
- junit-jupiter-params(用于参数化测试)
所以我想 junit-jupiter
已经足够用于我项目中的 运行 JUnit Jupiter(如果我错了请纠正我)。 我想知道这里的 junit-bom
和 JUnitPlatform
是什么? 我可以简单地去掉它们吗?谢谢大家:)
junit-bom
是 JUnit 的物料清单 (BOM)。当包含此 BOM 时,它将确保为您对齐和管理所有 JUnit 5 依赖项版本。您可以在 this article.
中找到有关 BOM 概念的更多信息
这就是导入时不必指定版本的原因junit-jupiter
:
// with the BOM, no version needed
testImplementation('org.junit.jupiter:junit-jupiter')
// when using no BOM, version info is needed
testImplementation('org.junit.jupiter:junit-jupiter:5.7.1')
如果您从同一个项目导入多个依赖项,您将看到 BOM 的好处。当只使用一个依赖项时,它可能看起来是多余的:
// only define the version at a central place, that's nice
testImplementation(platform('org.junit:junit-bom:5.7.1'))
testImplementation('org.junit.jupiter:junit-jupiter')
testImplementation('org.junit.vintage:junit-vintage-engine') // when you want to also run JUnit 3 + 4 tests
useJUnitPlatform()
指示 Gradle 测试任务使用 JUnit 平台执行测试。这是必需的。
在您的情况下,您有一个最小的工作设置来将 JUnit 5 用于 Gradle 项目。你可以做的是删除junit-bom
并自己添加版本信息:
plugins {
id 'java'
}
repositories {
mavenCentral()
}
dependencies {
testImplementation('org.junit.jupiter:junit-jupiter:5.7.1')
}
test {
useJUnitPlatform()
testLogging {
events "passed", "skipped", "failed"
}
}
但我会坚持 JUnit 团队及其示例项目在 GitHub 上的建议。
我正在阅读 Junit 5 User Guide. It leads me to a JUnit 5 Jupiter Gradle Sample,这是将 Junit 5 与 Gradle 一起使用的最简单示例。在 build.gradle
文件中,有 2 个依赖项,junit-jupiter
和 junit-bom
。而在test
任务中,它也调用了useJUnitPlatform()
函数。
plugins {
id 'java'
}
repositories {
mavenCentral()
}
dependencies {
testImplementation(platform('org.junit:junit-bom:5.7.1'))
testImplementation('org.junit.jupiter:junit-jupiter')
}
test {
useJUnitPlatform()
testLogging {
events "passed", "skipped", "failed"
}
}
据我了解,junit-jupiter
是聚合神器,拉取了以下3个神器,
- junit-jupiter-api(编译依赖)
- junit-jupiter-engine(运行时依赖)
- junit-jupiter-params(用于参数化测试)
所以我想 junit-jupiter
已经足够用于我项目中的 运行 JUnit Jupiter(如果我错了请纠正我)。 我想知道这里的 junit-bom
和 JUnitPlatform
是什么? 我可以简单地去掉它们吗?谢谢大家:)
junit-bom
是 JUnit 的物料清单 (BOM)。当包含此 BOM 时,它将确保为您对齐和管理所有 JUnit 5 依赖项版本。您可以在 this article.
这就是导入时不必指定版本的原因junit-jupiter
:
// with the BOM, no version needed
testImplementation('org.junit.jupiter:junit-jupiter')
// when using no BOM, version info is needed
testImplementation('org.junit.jupiter:junit-jupiter:5.7.1')
如果您从同一个项目导入多个依赖项,您将看到 BOM 的好处。当只使用一个依赖项时,它可能看起来是多余的:
// only define the version at a central place, that's nice
testImplementation(platform('org.junit:junit-bom:5.7.1'))
testImplementation('org.junit.jupiter:junit-jupiter')
testImplementation('org.junit.vintage:junit-vintage-engine') // when you want to also run JUnit 3 + 4 tests
useJUnitPlatform()
指示 Gradle 测试任务使用 JUnit 平台执行测试。这是必需的。
在您的情况下,您有一个最小的工作设置来将 JUnit 5 用于 Gradle 项目。你可以做的是删除junit-bom
并自己添加版本信息:
plugins {
id 'java'
}
repositories {
mavenCentral()
}
dependencies {
testImplementation('org.junit.jupiter:junit-jupiter:5.7.1')
}
test {
useJUnitPlatform()
testLogging {
events "passed", "skipped", "failed"
}
}
但我会坚持 JUnit 团队及其示例项目在 GitHub 上的建议。