gpt4 book ai didi

Gradle 从 "test"依赖 jars 运行测试

转载 作者:行者123 更新时间:2023-12-04 04:04:43 25 4
gpt4 key购买 nike

任何人都能够从 gradle 构建中的“测试”依赖项 jar 运行测试?
我有一个 gradle 构建脚本,其中包含很少的 test-jars 以及 testRuntime 依赖项。我想使用“gradle test”在这些依赖项中运行测试。

我看到 gradle 没有开箱即用的解决方案来从 this link 中提到的 jar 运行测试。 .我正在尝试遵循本文中建议的“解包”选项。
不确定如何将解包任务与测试任务联系起来以遍历所有测试 jar 依赖项并运行测试?
PS:我知道我们不必在消费项目中运行依赖项测试。但出于我的原因,我必须这样做。

任何关于如何实现这一目标的 gradle 专家?

[编辑]
我使用下面的代码来从 jar 运行测试。但我想要的是一个通用任务,例如“runTestsFromDependencyJars”,它遍历所有测试配置依赖项并运行测试。不确定如何让它为所有这些依赖项运行?

    task unzip(type: Copy )  {
from zipTree(file('jar file with absolute path'))
into file("$temporaryDir/")
}

task testFromJar(type: Test , dependsOn: unzip) {
doFirst {
testClassesDir=file("$temporaryDir/../unzip/")
classpath=files(testClassesDir)+sourceSets.main.compileClasspath+sourceSets.test.compileClasspath
}
}

最佳答案

使用 ant junit 方法找到了解决方案。

 configurations {
testsFromJar {
transitive = false
}
junitAnt
}

dependencies {
junitAnt('org.apache.ant:ant-junit:1.9.3') {
transitive = false
}
junitAnt('org.apache.ant:ant-junit4:1.9.3') {
transitive = false
}

compile "groupid:artifact1name:version"
compile "groupid:artifact2name:version"
testsFromJar ( group:'groupid', name:'artifact1 name', version:'version',classifier:'tests')
testsFromJar ( group:'groupid', name:'artifact2 name', version:'version',classifier:'tests')

}
ant.taskdef(name: 'junit', classname: 'org.apache.tools.ant.taskdefs.optional.junit.JUnitTask',
classpath: configurations.junitAnt.asPath)


task runTestsFromJar( ) << {
configurations.testsFromJar.each {
file ->
ant.junit(printsummary:'on', fork:'yes', showoutput:'yes', haltonfailure:'yes') { //configure junit task as per your need
formatter (type:'xml')
batchtest(todir:"$temporaryDir", skipNonTests:'true' ) {
zipfileset(src:file,
includes:"**/*Test.class",
)
}
classpath {
fileset(file:file)
pathelement(path:sourceSets.main.compileClasspath.asPath+sourceSets.test.compileClasspath.asPath)
}
}
}
}

关于Gradle 从 "test"依赖 jars 运行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21439082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com