Gant build scripting, как получить задачу, которую я хочу выполнить
Это в Grails, но я не думаю, что применимо что-то конкретное для Grails.
У меня есть скрипт Ганта, который выглядит примерно так:
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 ответ
Мне удалось заставить его работать, это не совсем отвечает на ваш конкретный вопрос, но оригинальную идею; иметь произведенное 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, управляющую джунитом;
jvmarg(value:"${agentvmparam}")
И это работает как шарм.