Сценарий сборки Gant, как получить задачу, которую я хочу выполнить

StackOverflow https://stackoverflow.com/questions/4831121

Вопрос

Это есть в grails, но я не думаю, что к grails применимо что-то конкретное.

У меня есть скрипт Gant, который выглядит примерно так:

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)

Идея в том, что я пытаюсь запустить несколько модульных тестов с покрытием кода jacoco.Цель для запуска тестов определена в TestApp.groovy (AllTests()) и может быть импортирована и выполняться просто отлично, но задача покрытия из jacoco хочет, чтобы задача AllTests() была добавлена к ней как дочерняя задача.Ему нужно "обернуть" задачу для запуска тестов.XML-эквивалент Ant для того, что я пытаюсь сделать, заключается в следующем:

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

Итак, я предполагаю, что я ищу способ, в Gant, получить задачу из определения цели и передать ее задаче покрытия (я могу выполнить coverageTask.addChild(theRunTestsTask) ...coverageTask.выполнить() при необходимости).

Это малоизвестный вопрос, надеюсь, кто-нибудь сможет нам с ним помочь.

Это было полезно?

Решение

Мне удалось заставить это работать, это не совсем ответ на ваш конкретный вопрос, но на оригинальную идею;иметь созданное jacoco покрытие для тестов junit в рамках сборки gant.Я не смог заставить jacoco: coverage работать, поэтому я сделал это с агентом jacoco;что - то вроде этого:

Настройка агента:

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

...

и на этом этапе нам нужно пройти agentvmparam к JVM, работающей под управлением junit;

jvmarg(value:"${agentvmparam}")

И это работает как по волшебству.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top