2011-01-28 36 views
1

這是在grails中,但我不認爲任何特定於grails的應用。Gant構建腳本,如何檢索我想執行的任務

我有一個Gant腳本文件看起來是這樣的:

includeTargets << grailsScript("Init") 
includeTargets << grailsScript("TestApp") 

target(main: "run tests with jacoco code coverage...") { 
    taskdef (name:'coverage', classname:'org.jacoco.ant.CoverageTask', classpathref:'core.classpath') 
    coverage(*** NEED TO PUT RUN-TESTS TASK HERE ***) 
} 

setDefaultTarget(main) 

的想法是,我試圖運行一些單元測試與jacoco代碼覆蓋率。運行測試的目標在TestApp.groovy(allTests())中定義,並且可以導入並運行得很好,但jacoco的覆蓋任務需要將allTests()任務添加到它作爲子任務。它需要「包裝」任務來運行測試。螞蟻的xml相當於什麼,我試圖做的是這樣的:

<jacoco:coverage> 
    <taskToRunTheTests ... > 
     < ... setup ... > 
    </taskToRunTheTests> 
</jacoco:coverage> 

所以我想我在尋找一種方法,在甘特,以獲得從目標定義一個任務,並把它傳遞沿着覆蓋任務(我可以做coverageTask.addChild(theRunTestsTask)... coverageTask.execute()如果需要的話)。

這是一個不起眼的,希望有人能幫助我們。

+0

你也許找到了解決這個問題的方法嗎?我正試圖達到完全一樣的。 – abalogh 2012-11-30 09:29:21

回答

0

我設法讓它工作,這並不完全回答你的具體問題,而是最初的想法;在gant版本中製作jacoco製作的junit測試。我無法獲得jacoco:覆蓋面工作,所以我使用jacoco代理進行了覆蓋;是這樣的:

設置代理:

import static groovy.xml.NamespaceBuilder.newInstance as namespace 
def jacoco = namespace(ant, 'antlib:org.jacoco.ant') 

...

jacoco.agent(property: 'agentvmparam', destfile: "$dirs.projDir\\target\\jacoco.exec", includes: '*', output: 'file', dumponexit: 'true') 

...

,並在這一點上,我們需要將agentvmparam傳遞到JVM運行junit;

jvmarg(value:"${agentvmparam}") 

它的工作方式就像一個魅力。

相關問題