Frage

Dies ist in Grails enthalten, aber ich glaube nicht, dass irgendetwas Spezifisches für Grails zutrifft.

Ich habe ein Gant-Skript, das ungefähr so ​​aussieht:

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)

Die Idee ist, dass ich versuche, einige Unit-Tests mit Jacoco-Codeabdeckung durchzuführen.Das Ziel zum Ausführen der Tests ist in TestApp.groovy ( allTests() ) definiert und kann problemlos importiert und ausgeführt werden, aber der Abdeckungsaufgabe von jacoco möchte, dass die Aufgabe allTests() als untergeordnete Aufgabe hinzugefügt wird.Es muss die Aufgabe „umschließen“, um die Tests auszuführen.Das Ant-XML-Äquivalent für das, was ich versuche, ist Folgendes:

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

Ich vermute also, dass ich nach einer Möglichkeit suche, in Gant eine Aufgabe aus einer Zieldefinition abzurufen und sie an die Abdeckungsaufgabe weiterzuleiten (ich kann coverTask.addChild(theRunTestsTask) ausführen ...coverTask.execute() (falls erforderlich).

Das ist eine unklare Angelegenheit, ich hoffe, jemand kann uns dabei helfen.

War es hilfreich?

Lösung

Ich habe es geschafft, es zum Laufen zu bringen. Dies beantwortet nicht genau Ihre spezifische Frage, sondern die ursprüngliche Idee.um eine von Jacobo erstellte Abdeckung für Junit-Tests innerhalb eines Gant-Builds zu haben.Ich konnte die jacoco:coverage nicht zum Laufen bringen, also habe ich es mit dem jacoco-Agenten gemacht;etwas wie das:

Einrichten des Agenten:

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

...

und an diesem Punkt müssen wir das passieren agentvmparam zur JVM, auf der junit ausgeführt wird;

jvmarg(value:"${agentvmparam}")

Und es funktioniert wie ein Zauber.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top