1

これは 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() タスクを子タスクとして追加する必要があります。テストを実行するには、タスクを「ラップ」する必要があります。私がやろうとしていることに相当する Ant xml は次のとおりです。

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

だから私が探しているのは、Gant で、ターゲット定義からタスクを取得し、それをカバレッジ タスクに渡す方法だと思います (coverageTask.addChild(theRunTestsTask) ... coverageTask.execute( を実行できます)。 ) 必要であれば)。

これはあいまいなものです。誰かが私たちを助けてくれることを願っています。

4

1 に答える 1

0

私はなんとかそれを機能させました。これはあなたの特定の質問に正確に答えるのではなく、元のアイデアです。ガント ビルド内の junit テスト用に jacoco が生成したカバレッジを取得します。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}")

そして、それは魅力のように機能しています。

于 2012-11-30T12:41:28.147 に答える