9

私はantを介してjunitテストを実行していますが、IDEを介した場合よりも実行速度が大幅に遅くなっています。私のアリの呼び出しは次のとおりです。

    <junit fork="yes" forkmode="once" printsummary="off">
        <classpath refid="test.classpath"/>
        <formatter type="brief" usefile="false"/>
        <batchtest todir="${test.results.dir}/xml">
            <formatter type="xml"/>
            <fileset dir="src" includes="**/*Test.java" />
        </batchtest>
    </junit>

私のIDE(0.067s)でほぼ瞬時に実行される同じテストは、Antを介して実行されると4.632秒かかります。以前は、junit forkパラメーターを使用することで、このようなテストの問題をスピードアップすることができましたが、この場合、これは役に立たないようです。これらのテストを高速化するために、どのプロパティまたはパラメーターを確認できますか?

より詳しい情報:

IDEから報告された時間とjunitタスクが出力する時間を使用しています。これは、アリの実行の最後に報告された合計時間ではありません。

したがって、奇妙なことに、この問題は自然に解決しました。この問題の原因は何でしょうか?システムはローカルディスク上で実行されるため、問題はありません。

4

7 に答える 7

4

盲目的な推測です。ネストされた<jvmarg>タグを使用して-Xmxオプションを設定することにより、フォークされたVMで使用可能な最大ヒープサイズを増やしてみてください。

于 2008-09-26T17:56:07.693 に答える
4

IDE が結果をメモリに保持しているのに対し、antscript が結果を XML ファイルに出力しているためだと思います。ファイルを書き込まない場合よりも、ファイルを書き込む方が時間がかかります。

todir="${test.results.dir}/xml"

これは、結果をそのディレクトリに貼り付けるように指示する <batchtest> 呼び出しの一部です。そのままにしておくと、結果が何であれ、「現在のディレクトリ」に結果を貼り付けるように指示されているように見えます。一見、完全にオフにするものは何もありませんでした。

于 2008-12-18T13:50:53.177 に答える
1

その情報で伝えるのは難しい。私が最初に行うことは、テスト結果を見て、個々のテストの実行速度が一様に遅いかどうか、またはテスト ケースの特定のサブセットに絞り込めるかどうかを判断することです。

(0 番目に行うことは、ant タスクが Eclipse と同じ JVM を使用していること、およびクラスパスの依存関係とインポートされた JAR が本当に完全に同一であることを確認することです)

于 2008-09-23T19:18:05.863 に答える
1

Eclipse はインクリメンタル コンパイルを行い、Ant は行わないため、これが表示されている可能性があります。この時間がテスト対象のみで無駄になっていることを確認できますか?

于 2008-09-24T03:42:21.580 に答える
0

fork、forkmode、threads を次の値に設定してみてください。

<junit fork="yes" forkmode="perTest" printsummary="off" threads="4">
    <classpath refid="test.classpath"/>
    <formatter type="brief" usefile="false"/>
    <batchtest todir="${test.results.dir}/xml">
        <formatter type="xml"/>
        <fileset dir="src" includes="**/*Test.java" />
    </batchtest>
</junit>

https://ant.apache.org/manual/Tasks/junit.htmlも参照してください。

于 2016-04-21T17:05:13.790 に答える
0

記録のために、私は自分の問題を見つけました。このプロジェクトではコード難読化ツールを使用しており、その難読化ツールの文字列暗号化部分は「最大」に設定されています。これにより、文字列が存在する操作が遅くなりました。

文字列の暗号化をより高速なモードに変更すると、問題が解決しました。

于 2008-10-27T16:26:05.077 に答える