我目前的测试任务如下:
test {
doFirst {
println 'Starting application...'
Thread.startDaemon {
appProcess = testServerExec.execute()
}
sleep 20000 // wait for thread to start
}
doLast {
appProcess.destroy()
}
}
我注意到如果测试通过,appProcess.destroy()
被调用,每个人都很高兴。但是,如果测试失败,则线程会停滞不前,我必须自己杀死该进程。我知道Gradle有一个try / finally,但我不确定在这种情况下如何正确使用它。基本上,即使测试失败,我也希望appProcess.destroy()
能够运行。
我该怎么办呢?
编辑:发现了beforeSuite
和afterSuite
,但我运行了多个测试套件,我只想在所有套件之前启动此线程,并在所有套件之后终止。
答案 0 :(得分:3)
您可以使用afterSuite并检查具有null父级的套件。这是根套件:
test{
afterSuite{descr, result ->
if(desc.parent == null){
//put your logic here
}
}
}
希望有所帮助,
欢呼,勒内