如何在Gradle中列出测试的类路径

28
当我尝试运行gradle test时,会得到以下输出:
$ gradle test
:ro:compileJava UP-TO-DATE
:ro:processResources UP-TO-DATE
:ro:classes UP-TO-DATE
:ro:jar
:compileJava
:processResources UP-TO-DATE
:classes
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test

ro.idea.ToggleTest > testIsAd FAILED
    java.lang.NoClassDefFoundError at ToggleTest.java:13
        Caused by: java.lang.ClassNotFoundException at ToggleTest.java:13

ro.idea.ToggleTest > testToggle FAILED
    java.lang.NoClassDefFoundError at ToggleTest.java:13

2 tests completed, 2 failed
:test FAILED

我想检查我的类路径是否正确。

我的问题是:如何使用Gradle任务在测试时列出类路径?

7个回答

38

您可以使用以下命令列出测试的运行时依赖项:

gradle dependencies --configuration=testRuntime

或者,如果您想查看实际文件:

task printClasspath {
    doLast {
        configurations.testRuntime.each { println it }
    }
}

这是否包括使用 testCompile / testImplementation 声明的依赖项? - Brad Mace
1
使用testRuntimeClasspath来包含testImplementation - steinybot
2
我收到了错误信息:“无法获取类型为org.gradle.api.internal.artifacts.configurations.DefaultConfigurationContainer的配置容器的未知属性'testRuntime'。” - user001

3
此外,要列出主(非测试)应用程序运行的类路径,请使用以下命令:
run << {
    doLast {
        configurations.runtime.each { println it }
    }
}

2

这个对我来说有效(在Gradle 5.6中)

task printTestClasspath.doLast {
  println(sourceSets.test.runtimeClasspath.asPath)
}

2

对我起作用了(Gradle 6.3,Kotlin DSL):

tasks.withType<Test> {
    this.classpath.forEach { println(it) }
}

1
假设您正在使用Gradle包装器,您可以使用以下命令。
./gradlew dependencies --configuration=testRuntimeClasspath

它将列出可供您的测试使用的依赖项。


0

我正在使用gradle 7.3.3版本。对我来说,这个方法有效:

tasks.withType<Test> {
  useJUnitPlatform()
  println("Test classpath")
  sourceSets.test.get().runtimeClasspath.forEach { println(it) }
}

0

Peter Niederwieser的扩展解决方案,如果您想从所有可能的配置(使用简单循环)打印并忽略可能的错误:

task printClasspath {
    doLast {
        configurations.each { Configuration configuration ->
            try {
                println configuration
                configuration.each { println it }
            } catch (Exception e){
                println "Error getting details of $configuration"
            }
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接