ガントビルドスクリプト、実行したいタスクを取得する方法
-
27-10-2019 - |
質問
これは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のカバレッジタスクは、子タスク()タスクが子タスクとして追加されていることを望んでいます。テストを実行するには、タスクを「ラップ」する必要があります。私がやろうとしていることに相当するアリXMLは次のとおりです。
<jacoco:coverage>
<taskToRunTheTests ... >
< ... setup ... >
</taskToRunTheTests>
</jacoco:coverage>
ですから、私が探しているのは、ガントで、ターゲット定義からタスクを取得し、カバレッジタスクに渡す方法だと思います(coveragetask.addchild(therunteststask)... coveragetask.execute( ) 必要であれば)。
これはあいまいなものです。誰かが私たちを助けてくれることを願っています。
解決
私はそれを機能させることができました、これはあなたの特定の質問ではなく、元のアイデアに正確に答えます。 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
JVMランニングJunitに。
jvmarg(value:"${agentvmparam}")
そして、それは魅力のように機能しています。
所属していません StackOverflow