使用多个 JRE 版本/位运行 Gradle 测试

问题描述 投票:0回答:1

我有一个使用 Gradle 构建的 Java 项目,它具有不同的代码路径,具体取决于 JRE 位数。我正在为内部编写 JUnit 5 测试,但我需要在 64 位和 32 位 JRE 上运行它们。

此外,出于面向未来的原因,我希望能够使用不同的 JRE 版本进行测试。目前该项目的目标是 Java 17,但我还想使用 Java 21(也是 64 位和 32 位)进行测试。目前这在某种程度上是可选的,但却是一个有价值的奖励。

开发是在 IntelliJ Idea (Windows) 上完成的,但测试不必在 IntelliJ 内使用上述所有 JRE 运行。如果可以的话,这将是另一个奖励。

我找到了几个相关的插件,但它们似乎不包括 JRE 位数选择。

注意:位数差异的原因是运行时使用了不同的本机二进制文件。

java gradle junit5
1个回答
0
投票

您应该拥有使用 JVM 工具链测试套件 所需的一切。

以下示例介绍了如何设置在 Oracle JVM 版本 21 中运行测试的测试任务(使用 Kotlin DSL)。

plugins {
    java
    `jvm-test-suite`
}

testing {
    suites {
        val test by getting(JvmTestSuite::class) {
            useJUnitJupiter()
        }
        register<JvmTestSuite>("testWithOracleJava21") {
            dependencies {
                implementation(project())
            }
            targets {
                all {
                    testTask {
                        javaLauncher = javaToolchains.launcherFor {
                            languageVersion = JavaLanguageVersion.of(21)
                            vendor = JvmVendorSpec.ORACLE
                        }
                    }
                }
            }
        }
    }
}

Gradle 将在您的计算机中搜索与您指定的版本和供应商匹配的安装。这不允许您直接指定目标架构,但希望供应商字段允许您将 Gradle 唯一地指向您想要用于每个测试的 JVM。

© www.soinside.com 2019 - 2024. All rights reserved.