Gradle测试:即使测试失败,如何做某事

时间:2013-07-25 17:07:16

标签: gradle

我目前的测试任务如下:

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()能够运行。

我该怎么办呢?

编辑:发现了beforeSuiteafterSuite,但我运行了多个测试套件,我只想在所有套件之前启动此线程,并在所有套件之后终止。

1 个答案:

答案 0 :(得分:3)

您可以使用afterSuite并检查具有null父级的套件。这是根套件:

test{
    afterSuite{descr, result ->
        if(desc.parent == null){
            //put your logic here
        }
    }
}

希望有所帮助,

欢呼,勒内