Gant build scripting, как получить задачу, которую я хочу выполнить - PullRequest
1 голос
/ 28 января 2011

Это в граалях, но я не думаю, что применимо что-то конкретное для граалей.

У меня есть скрипт 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 () была добавлена ​​в нее как дочерняя задача. Нужно «обернуть» задачу для запуска тестов. Эквивалент Ant xml для того, что я пытаюсь сделать, таков:

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

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

Это неясно, надеюсь, кто-нибудь может помочь нам с этим.

1 Ответ

0 голосов
/ 30 ноября 2012

Мне удалось заставить его работать, это не совсем отвечает на ваш конкретный вопрос, но оригинальную идею; иметь произведенное Jacoco покрытие для тестов junit в рамках сборки Gant. Я не мог получить jacoco: покрытие работало, поэтому я сделал это с агентом 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}")

И он работает как шарм.

...