微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

junit-bom 和 junit 平台是什么,我应该将它们包含在 gradle 依赖项中吗?

如何解决junit-bom 和 junit 平台是什么,我应该将它们包含在 gradle 依赖项中吗?

我正在阅读Junit 5 User Guide。它让我想到了 JUnit 5 Jupiter Gradle Sample,这是将 Junit 5 与 Gradle 结合使用的最简单示例。在 build.gradle 文件中,有 2 个依赖项,junit-jupiterjunit-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 个神器,

  1. junit-jupiter-api(编译依赖)
  2. junit-jupiter-engine(运行时依赖)
  3. junit-jupiter-params(用于参数化测试)

所以我想 junit-jupiter 已经足以在我的项目中运行 JUnit Jupiter(如果我错了,请纠正我)。 我想知道这里的 junit-bomJUnitPlatform 是什么?我可以简单地去掉它们吗?谢谢大家:)

解决方法

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 上的示例项目。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。