当前位置: 首页 > 知识库问答 >
问题:

JUnit5版本插件文件名或扩展名太长

邹斌
2023-03-14

在将org.junit.platform.Gradle.plugin添加到构建中并从junit4迁移所有内容后,Gradle开始出现以下错误。

在老式运行器中所有运行都很好,但junit5测试不是。

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':server:junitPlatformTest'.

Caused by: org.gradle.process.internal.ExecException: A problem occurred starting process 'command 'C:\Program Files\Java\jdk1.8.0_131\bin\java.exe''
...
Caused by: java.io.IOException: CreateProcess error=206, The filename or extension is too long
// Note: the user's test runtime classpath must come first; otherwise, code
// instrumented by Clover in JUnit's build will be shadowed by JARs pulled in
// via the junitPlatform configuration... leading to zero code coverage for
// the respective modules.
classpath = project.sourceSets.test.runtimeClasspath + project.configurations.junitPlatform

我很好奇我是否可以在项目评估后删除这个配置JUnitPlatform,因为无论如何都添加了所有JUnit依赖项来编译代码,然后插件只是在顶部添加负载。我创建了一个项目,将所有Junit5库封装在一个人工制品中。

编辑3

我确实设法将所有木星人工制品打包到1中,以稍微缩小cp,但我的类路径仍然超过35K,这有点奇怪

那么gradle如何运行junit5测试呢?似乎它将所有其他项目的所有传递都关联起来,并将它们添加到cp,然后以error=206刹车

共有1个答案

徐星阑
2023-03-14

Gradle4.6支持JUnit5!请记住,老式引擎需要与木星号相同的版本,现在编辑:16/03/2018

我已经设法使所有工作与下面的代码。

它将生成一个带有清单的jar并将该jar放在类路径上。

def version = "5.0.1"
def platformVersion = "1.0.1"
def vintageVersion = "4.12.1"
def projectCp = "${project.name}Classpath.jar"

dependencies {

    compile "org.junit.jupiter:junit-jupiter-api:$version"
    compile "org.junit.platform:junit-platform-launcher:$platformVersion"
    compile "org.junit.platform:junit-platform-runner:$platformVersion"

    testCompile "junit:junit:4.12"

    testCompile "org.junit.jupiter:junit-jupiter-params:$version"

    testRuntime "org.junit.vintage:junit-vintage-engine:$vintageVersion"
    testRuntime "org.junit.platform:junit-platform-console:$platformVersion"
    testRuntime "org.junit.jupiter:junit-jupiter-engine:$version"
}

afterEvaluate {
    if (!project.tasks.findByName('packClasspath')) {
        task packClasspath(type: Jar) {
            archiveName = projectCp
            version = ''
            manifest {
                attributes 'Class-Path':
                project.configurations.testRuntime.collect { "file:///${it.absolutePath}" }.join(' ')}

            }
        }

        if (!project.tasks.findByName('jupiterTest')) {
            task jupiterTest(type: JavaExec) {
                jvmArgs '-ea'
                classpath = files(
                    "${project.buildDir}\\libs\\${projectCp}",
                    project.sourceSets.test.output,
                    project.sourceSets.main.output,
                )

                main 'org.junit.platform.console.ConsoleLauncher'
                args '--scan-class-path'
                args "--reports-dir=$project.testReportDir"
            }
        }

        test.dependsOn jupiterTest
        jupiterTest.dependsOn packClasspath
        jupiterTest.dependsOn testClasses

        test.enabled = false

}

Gradle4.6支持JUnit5!

 类似资料:
  • 问题内容: 我知道这个问题以前曾被问过,但是我无法使用其他帖子中的解决方案来解决。我正在尝试使用Maven编译gwt项目的复杂层次结构。一切正常,直到我不得不再添加一个库,更具体地说:org.eclipse.birt.runtime 现在我得到这个错误: 我正在使用的依赖项是: 问题答案: 我终于设法解决了: 事实证明birt及其依赖项只是添加了太多的库,而classpath变得对于Windows

  • 我在eclipse helios中有一个错误: 执行命令行时发生异常。无法运行程序“C:\program Files(x86)\Java\jre6\bin\javaw.exe”(在目录“C:\Users\motiver\helios_workspace\TimeTracker”中):CreateProcess error=206,文件名或扩展名太长 我做了一些研究,但大多数问题都与使用谷歌应用引擎

  • 我的项目路径: Java版本:JDK7 update 21(由于项目限制,我无法使用任何其他版本) 构建工具:蚂蚁,Gradle IDE: IntelliJ 17.3, 操作系统:Windows 10。 尝试过但对我无效链接: 1) CreateProcess error=206,运行main()方法时文件名或扩展名太长 2) Createprocess错误=206;文件名或扩展名太长 3) ht

  • 问题内容: 我在日食日光灯中遇到此错误: 执行命令行时发生异常。无法运行程序“ C:\ Program Files(x86)\ Java \ jre6 \ bin \ javaw.exe”(在目录“ C:\ Users \ motiver \ helios_workspace \ TimeTracker”中):CreateProcess错误= 206,文件名或扩展名是太长 我进行了一些研究,但大多

  • cmf_get_file_extension($filename) 功能 获取文件扩展名 参数 $filename: string 文件名 返回 string 文件扩展名

  • X2.2.0新增 sp_get_file_extension($filename) 功能: 获取文件扩展名 参数: $filename: 文件名 返回: 类型string,文件扩展名 使用: $suffix = sp_get_file_extension('23232.png');