Question

Ceci est en Grails, mais je ne pense pas que quoi que ce soit spécifique à Grails applique.

J'ai un script qui ressemble à quelque chose Gant comme ceci:

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'idée est que je suis en train d'exécuter des tests unitaires avec une couverture de code jacoco. L'objectif pour exécuter les tests est défini dans TestApp.groovy (ALLTESTS ()) et peuvent être importés et courir très bien, mais la tâche de couverture de jacoco veut la tâche ALLTESTS () ajouté à une tâche comme des enfants. Il doit « envelopper » la tâche d'exécuter les tests. L'équivalent xml Ant pour ce que je suis en train de faire est la suivante:

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

Je suppose que ce que je suis à la recherche est un moyen, dans Gant, pour obtenir une tâche à partir d'une définition de cible, et le transmettre à la tâche de couverture (que je peux faire coverageTask.addChild (theRunTestsTask) ... coverageTask .Execute () le cas échéant).

Ceci est un obscur, quelqu'un l'espoir peut aider à nous avec.

Était-ce utile?

La solution

J'ai réussi à le faire fonctionner, cela ne répond pas exactement à votre question spécifique, mais l'idée originale; d'avoir une couverture produit jacoco-pour les tests JUnit dans une construction gant. Je ne pouvais pas le jacoco: travail de couverture, donc je l'ai fait avec l'agent jacoco; quelque chose comme ceci:

Configuration de l'agent:

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')

...

et à ce stade, nous devons passer le agentvmparam à la machine virtuelle Java en cours d'exécution JUnit;

jvmarg(value:"${agentvmparam}")

Et cela fonctionne comme un charme.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top