2013-07-25 101 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