这是在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的coverage任务希望将allTests()任务作为子任务添加到其中。它需要“包装”任务来运行测试。我正在尝试做的Ant xml等价物是:
<jacoco:coverage>
<taskToRunTheTests ... >
< ... setup ... >
</taskToRunTheTests>
</jacoco:coverage>所以我猜我正在寻找的是一种方法,在Gant中,从目标定义中获取任务,并将其传递给覆盖任务(我可以执行coverageTask.addChild(theRunTestsTask) ...如有必要,使用coverageTask.execute()。
这是一个晦涩难懂的问题,希望有人能帮我们解决。
发布于 2012-11-30 20:41:28
我设法让它正常工作,这并没有确切地回答你的具体问题,而是最初的想法;在gant构建中为junit测试提供jacoco生成的覆盖范围。我不能让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传递给运行junit的JVM;
jvmarg(value:"${agentvmparam}")它就像一个护身符一样起作用。
https://stackoverflow.com/questions/4831121
复制相似问题