Java 模块化,测试 类 中的编译问题使用 java9-modularity 插件 gradle

Java modularity, compilation problem in test classes using java9-modularity plugin for gradle

我正在尝试使用 Java 模块系统和 gradle 创建 Java 应用程序。我使用这个插件:https://github.com/java9-modularity/gradle-modules-plugin 由 gradle 推荐。 Java 源代码正确编译并按预期使用 module-info.java。但是,我的单元测试不再起作用了。我想使用现在导致问题的 assertJ。当我尝试编译测试 类 时,出现此错误:

error: package org.assertj.core.api is not visible import static org.assertj.core.api.Assertions.assertThat; ^ (package org.assertj.core.api is declared in module org.assertj.core, but module module.test.main does not read it)

我试过设置

tasks {
    test {
        extensions.configure(TestModuleOptions::class) {
            runOnClasspath = true
        }
    }
}

但这并没有改变任何东西。

我已经创建了临时 github 存储库供任何人重现该问题:https://github.com/Mariusz-v7/tmp-module-test

现在如何修复我的单元测试?

plugin documentation 中所述,默认情况下测试发生在模块路径上。

您更改的是 运行 测试。然而,测试编译也发生在模块路径上,因此您需要模块正确导入测试依赖项。错误告诉你的是什么。

作为替代方案,您可以在即将推出的 Gradle 6.4 中尝试原生支持,release candidate 可用