Java Gradle无法使用useJUnitPlatform()运行JUnit测试

Java Gradle无法使用useJUnitPlatform()运行JUnit测试,java,gradle,javafx,junit,junit5,Java,Gradle,Javafx,Junit,Junit5,我的项目是一个使用JavaJDK11的依赖于Gradle的JavaFX项目。该项目是使用Gradle项目的默认结构创建的。所以在src下它有“main”和“test”,每一个都由一个“java”和一个“resource”目录组成 为了与Jenkins建立CI管道,gradlew测试必须以我的IDE(IntelliJ)目前为止的方式运行所有测试。有趣的是,经过几个小时的尝试,我还是没能让它发挥作用 下面是build.gradle文件的所有相关部分,请注意,为了简单起见,我省略了所有不相关的部分 d

我的项目是一个使用JavaJDK11的依赖于Gradle的JavaFX项目。该项目是使用Gradle项目的默认结构创建的。所以在src下它有“main”和“test”,每一个都由一个“java”和一个“resource”目录组成

为了与Jenkins建立CI管道,gradlew测试必须以我的IDE(IntelliJ)目前为止的方式运行所有测试。有趣的是,经过几个小时的尝试,我还是没能让它发挥作用

下面是build.gradle文件的所有相关部分,请注意,为了简单起见,我省略了所有不相关的部分

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.1.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.1.0'
}

test {
    useJUnitPlatform()
}

application {
    mainClassName = 'FP.EDM.main/edm.Main'
}
每当运行gradlew test命令时,都会出现以下两个错误:

java.lang.RuntimeException: Unable to parse --add-opens <module>/<package>: FP.EDM.main/
我尝试过的另一种方法是使用useJUnit()命令而不是useJUnitPlatform()。乍一看,这似乎工作得很好,但当我使用它时,根本找不到任何测试。我的假设是测试的默认模块设置不正确。然而,我找不到办法将其设置在网上的任何地方,也没有提到这一点。请让我知道你的想法:)


另外,我不想降级到JUnit 4.x,因为这需要我重写所有这些(工作)测试。

好吧,我解决了这个问题,我不太确定到底是什么原因导致了它,但它与主模块和测试模块的模块信息有关。我决定暂时删除这两个选项,它会正常运行

编辑: 经过几天的环顾,我终于弄明白了。添加
模块info.java
封装模块及其依赖项。因为这个项目我不推荐使用,因为它可能会导致问题,尽管我自己没有尝试过

那怎么走呢?有两种选择:

-忽略module-info.java>这可以在build.gradle文件中完成

-指定模块-info.test>这是应用某些依赖项的一种方法,我的方法如下所示:

--add-modules
        org.junit.jupiter.api

--add-reads
        FP.EDM.main=org.junit.jupiter.api
请记住:这个文件格式应该放在源代码的根目录下,我所有的测试文件都在根目录下的不同目录下,因为我没有让它在根目录下工作(尽管可能是我)


为了进一步阅读,这里有或

好的,我解决了这个问题,我不太确定到底是什么导致了它,但它与主模块和测试模块的模块信息有关。我决定暂时删除这两个选项,它会正常运行

编辑: 经过几天的环顾,我终于弄明白了。添加
模块info.java
封装模块及其依赖项。因为这个项目我不推荐使用,因为它可能会导致问题,尽管我自己没有尝试过

那怎么走呢?有两种选择:

-忽略module-info.java>这可以在build.gradle文件中完成

-指定模块-info.test>这是应用某些依赖项的一种方法,我的方法如下所示:

--add-modules
        org.junit.jupiter.api

--add-reads
        FP.EDM.main=org.junit.jupiter.api
请记住:这个文件格式应该放在源代码的根目录下,我所有的测试文件都在根目录下的不同目录下,因为我没有让它在根目录下工作(尽管可能是我)


为了进一步阅读,有或

错误消息表明由于使用模块,java指令插入/选项存在问题。如果您使用的是最新的Gradle版本-如果没有,请先试用-需要更多有关项目设置的信息。我建议您创建一个公共repo/项目,设置失败的可能性最小。错误消息表明,由于使用了模块,java instrumentation/选项存在问题。如果您使用的是最新的Gradle版本-如果没有,请先试用-需要更多有关项目设置的信息。我建议您创建一个公共回购/项目,将失败设置降至最低。