2

膨大な量のjunitがあり、それらすべてを実行するには長い時間がかかります。ただし、CPU とメモリの使用率は約 30% にすぎません。JUnit はスレッドセーフではなく、修正することができないため、同じ jvm 内の並列スレッドで JUnit を実行できません。私が知る限り、junit ant タスクは別の jvm を起動して、junit を実行します。ant から junits 用にいくつかの jvm を実行することは可能ですか? このようなソリューションは、実行時間を大幅に短縮できると思います。

現在、私はそのようなコードを使用してantでそれらを実行しています:

<for param="bundle" keepgoing="true">
<path>
    <dirset dir="${testdir}/plugins">
        <depth max="0"/>
    </dirset>
</path>
<sequential>

    <echo message="Running tests in bundle @{bundle}"/>
    <junit outputtoformatters="no" printsummary="yes" failureproperty="test.failed" maxmemory="512m" fork="yes"  forkmode="once">
        <classpath>
            <path refid="tests.classpath" />
        </classpath>

        <formatter type="xml" />
        <batchtest todir="${junit.result.dir}">
            <fileset dir="@{bundle}/src">
                <patternset refid="test.sources" />
            </fileset>
        </batchtest>
    </junit>
</sequential>

4

1 に答える 1

2

これをチェックして ください http://ant.apache.org/manual/Tasks/parallel.html

の主な使用例は、アプリケーション サーバーなどの外部プログラムと、JUnit または TestNG テスト スイートを同時に実行することです。javadoc と javac のような大規模な Ant タスク シーケンスを同時に実行しようとする人は、実行するタスクのすべての同時実行バグを特定して修正するタスクを暗黙のうちに引き受けています。

この例があります

<parallel>
  <wlrun ... >
  <sequential>
    <sleep seconds="30"/>
    <junit fork="true" forkmode="perTest" ... >
    <wlstop/>
  </sequential>
</parallel>

編集:更新されたフォークモード設定

于 2012-12-04T16:34:11.460 に答える