Pregunta

Esto está en los gros, pero no creo que se aplique nada específico para los gros.

Tengo un guión Gant que se parece a esto:

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)

La idea es que estoy tratando de ejecutar algunas pruebas unitarias con la cobertura del código Jacoco. El objetivo para ejecutar las pruebas se define en testApp.groovy (AllTests ()) y se puede importar y ejecutar bien, pero la tarea de cobertura de Jacoco quiere que la tarea AllTests () se lo agregue como una tarea infantil. Necesita "envolver" la tarea para ejecutar las pruebas. El equivalente de Ant XML para lo que estoy tratando de hacer es esto:

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

Así que supongo que lo que estoy buscando es una forma, en Gant, para obtener una tarea de una definición de objetivo, y pasarla a la tarea de cobertura (puedo hacer CoverAgETask.addchild (TheruntestStask) ... CoverageTask.Execute ( ) si necesario).

Este es oscuro, espero que alguien pueda ayudarnos con eso.

¿Fue útil?

Solución

Me las arreglé para que funcionara, esto no responde exactamente a su pregunta específica sino a la idea original; tener cobertura producida por jacoco para pruebas JUNIT dentro de una construcción Gant. No pude obtener el Jacoco: la cobertura funcionó, así que lo hice con el agente de Jacoco; algo como esto:

Configuración del 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')

...

y en este punto necesitamos pasar el agentvmparam al JVM corriendo Junit;

jvmarg(value:"${agentvmparam}")

Y está funcionando como un encanto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top