2013-07-25 74 views
0

我目前的测试任务是这样的:摇篮测试:如何做,即使测试失败

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,但我运行了多套测试,我只想在所有套件之前启动此线程,并在所有套件之后终止。

+0

我不是专家,但是你尝试过'afterTest'?这似乎是一个可拆卸的能力。 [doc](http://www.gradle.org/docs/current/javadoc/org/gradle/api/tasks/testing/Test.html#afterTest(groovy.lang.Closure)) – zaquest

+0

有多个多重测试套房,我只想要这个线程创建/销毁一次,所以'afterTest'和'afterSuite'不适合我。不过,这是一个很好的想法。 – Depressio

+0

您可以使用[源集](http://www.gradle.org/docs/current/userguide/userguide_single.html#N11D51)吗? – zaquest

回答

3

您可以使用afterSuite并检查具有空父项的套件。这根套件:

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

希望帮助,

欢呼声中,勒内

+0

工作正常。看起来这会让我停下来,直到Gradle 1.7与终结者。谢谢! – Depressio