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

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

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

错误:包org.assertj.core.api不可见导入静态org.assertj.core.api.Assertions.assertThat;^(软件包org.assertj.core.api在模块org.assertj.core中声明,但是模块module.test.main无法读取它)

我尝试设置

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

但是这不会改变任何东西。

我为任何人创建了一个临时的github存储库以重现该问题:https://github.com/Mariusz-v7/tmp-module-test

如何立即修复单元测试?

java unit-testing gradle java-module
1个回答
0
投票

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

您所做的更改是关于running测试的。但是,测试编译也会在模块路径上进行,因此您需要模块正确导入测试依赖项。错误告诉您的是什么。

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

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