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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top