gpt4 book ai didi

gradle - 将时间限制应用于Gradle JavaExec任务?

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

我正在设置Randoop测试用例生成以在我的项目中运行。我通过JavaExec类型的Gradle任务实现了这一点:

task RandoopGenerateL1Tests(dependsOn: ['assembleDebug']) {
group = "Verification"
description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit."

//Various setup things here...

doLast {
javaexec {
classpath = tasks['testDebugUnitTest'].classpath
classpath = classpath + files('D:\\randoop-3.1.5\\randoop-all-3.1.5.jar')

systemProperty 'RANDOOP_PATH', 'D:\\randoop-3.1.5'
systemProperty 'RANDOOP_JAR', 'D:\\randoop-3.1.5\\randoop-all-3.1.5.jar'

def classlistarg = '--classlist=' + classlistfilepath
def packagenamearg = '--junit-package-name=' + key
def junitoutputdirarg = '--junit-output-dir=' + projectDir.path + '/src/randooptest/java'
def timelimitarg = '--timeLimit=10'

main = 'randoop.main.Main'
args 'gentests',classlistarg,packagenamearg,junitoutputdirarg,timelimitarg

println "Randoop will be invoked with args: " + args.toString()
}
}
}

--timeLimit = 10参数旨在将时间限制(以秒为单位)应用于Randoop的探索阶段,但这对我来说只是偶然的。在此任务的某些执行中,Randoop开始探索阶段,然后“冻结”-java.exe进程消耗0%的CPU,并且不发生任何输出。

是否可以对JavaExec任务设置时间限制以对该时间应用时间限制?

谢谢!

最佳答案

据我所知,您无法在JavaExec任务或javaExec方法调用上设置超时。

顺便说一句。您不使用JavaExec类型的任务,而是使用javaExec方法调用。仅当您想在自定义任务中执行更多操作时,这才有意义。如果您要做的只是java exec,则应改用JavaExec类型的任务。

我认为要获得所需的行为,您需要使用标准的Groovy方法来调用["java", "-jar", "your.jar", "your", "arguments"].execute()之类的外部进程,并使用Process.waitForOrKill(long)等待一定的时间,然后终止该进程。

关于gradle - 将时间限制应用于Gradle JavaExec任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48266610/

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