Gant accumulo di scripting, come recuperare un compito che io voglio eseguire
-
27-10-2019 - |
Domanda
Questo è in Grails, ma non credo che qualcosa di specifico per graal si applica.
Ho uno script Gant che sembra qualcosa di simile:
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)
L'idea è che sto cercando di eseguire alcuni test di unità con copertura del codice jacoco. Il target per eseguire i test è definita in TestApp.groovy (alltests ()) e può essere importato e gestito bene, ma il compito copertura da jacoco vuole che i alltests () compito aggiunto ad esso come un compito bambino. Ha bisogno di "avvolgere" il compito di eseguire i test. L'XML equivalente Ant per quello che sto cercando di fare è questo:
<jacoco:coverage>
<taskToRunTheTests ... >
< ... setup ... >
</taskToRunTheTests>
</jacoco:coverage>
Quindi, credo che quello che sto cercando è un modo, a Gant, per ottenere un compito da una definizione di destinazione e passarlo insieme al compito di copertura (che posso fare coverageTask.addChild (theRunTestsTask) ... coverageTask .execute () se necessario).
Questo è un oscuro, la speranza che qualcuno può aiutare noi con esso.
Soluzione
sono riuscito a farlo funzionare, questo non esattamente rispondere alla tua domanda specifica, ma l'idea originale; di avere una copertura jacoco-prodotto per i test JUnit all'interno di una build di Gant. Non ho potuto ottenere il jacoco: lavoro di copertura così ho fatto con l'agente jacoco; qualcosa di simile a questo:
Impostazione l'agente:
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')
...
e, a questo punto abbiamo bisogno di passare la agentvmparam
al JUnit esecuzione JVM;
jvmarg(value:"${agentvmparam}")
E sta funzionando come un fascino.