実行するために大量のヒープスペースを必要とするいくつかのJunitユニットテストがあります-1G (十分なヒープ領域でのみ実行され、Win 7 64ビットマシンで内部的に実行されるWebstartアプリのメモリ集中型機能をテストします。したがって、テストの再設計は実用的な提案ではありません。)
私はIntellij IDEAで開発しているので、テストクラスのJVMパラメーター(-Xmx1024Mなど)を設定できることを知っています。ただし、これはテストクラス全体を実行するためだけのものです。個々のテストを実行する場合は、そのテストメソッドの実行構成を再作成する必要があります。
また、これらはIDEおよびボックス固有であるため、ボックスを切り替える(複数のマシンで開発する)か、同僚の1人がテストを実行しようとすると、これらの設定は転送されません。 (また、EclipseやNetBeansなどの他のIDEが同僚によって使用されています。)FWIW、ソースコード管理にMercurialを使用しています。
ビルドサイクルでは、Mavenを使用しているため、そのためのJVMパラメーターを指定する方法を知っています。
だから:-テストクラス全体と個々のテストメソッドに適用されるJVMパラメータを指定する方法を探しています。および-(リポジトリからコードを取得した)任意のマシンのIDE間でこれらの仕様を共有したいと思います。
IntelliJでは、各実行構成のデフォルト設定を指定できます。 実行/デバッグ構成ダイアログ(テストごとにヒープを構成するために使用するダイアログ)でデフォルトおよびJUnitをクリックします。これらの設定は、新しい各JUnitテスト構成に自動的に適用されます。 Eclipseにも同様の設定が存在すると思います。
ただし、このような設定を(少なくともIntelliJで)環境間で転送する簡単なオプションはありません。 IntelliJプロジェクトファイルをリポジトリにコミットできます。動作する可能性がありますが、お勧めしません。
これらをmaven-surefire-plugin
に設定する方法を知っています。良い。これは最も移植性の高い方法です(例についてはPtomliの回答を参照してください)。
残りの部分-JUnitテストケースは、スタンドアロンプログラムではなく、単なるJavaクラスの集まりであることを覚えておく必要があります。ランナー次第です(スタンドアロンJUnitランナー、IDE、maven-surefire-plugin
にしてこれらのオプションを設定します。これらを設定するための「移植可能な」方法はないため、メモリ設定はランナー。
例を挙げると、サーブレットの開発時にXmx
パラメーターを定義することはできません。それを定義するのはコンテナー次第です。 「このサーブレットは常にXmx=1G
で実行する必要があります」と言うことはできません。
Mavenでは、surefireプラグインを設定できます
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.9</version>
<configuration>
<argLine>-Xmx256M</argLine>
</configuration>
</plugin>
ビルドにMavenを使用する場合、この構成はソースツリーに保持され、テストの実行時に適用されます。 Maven Surefire Plugin のドキュメントを参照してください。
パラメータはその場で設定することもできます。
mvn test -DargLine="-Dsystem.test.property=test"
http://www.cowtowncoder.com/blog/archives/2010/04/entry_385.html を参照してください
これらの設定を配布する簡単な方法はないと言っている他の人たちに同意します。
Eclipseの場合:同僚に次の設定を依頼してください。
-Xmx1024m
その後、すべてのテストは-Xmx1024m
で実行されますが、残念ながら、すべてのEclipseインストールでそれを設定しました。たぶん、この設定を含むカスタムEclipseパッケージを作成して、同僚に渡すことができます。
次の作業プロセスも役立ちます:IDEがテストを実行できない場合、開発者はMavenがこのテストを実行できるかどうかを確認する必要があります。
このサポートの質問によると https://intellij-support.jetbrains.com/hc/en-us/community/posts/206165789-JUnit-default-heap-size-overridden-
intelliJ junitテスト実行の-Xmx引数は、設定されている場合、maven-surefire-pluginから取得されます。
このpom.xmlスニペット
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>-Xmx1024m</argLine>
</configuration>
</plugin>
intelliJ 2016.2.4では、-Xmx1024引数をjunitテスト実行に渡すようです。
SystemPropertyVariablesを使用できます(Java.protocol.handler.pkgsはJVM引数名です):
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<systemPropertyVariables>
<Java.protocol.handler.pkgs>com.zunix.base</Java.protocol.handler.pkgs>
<log4j.configuration>log4j-core.properties</log4j.configuration>
</systemPropertyVariables>
</configuration>
</plugin>
http://maven.Apache.org/surefire/maven-surefire-plugin/examples/system-properties.html
Java.library.path JVMパラメーターに限定されたEclipse固有の代替手段により、別の応答で提案されているjdk全体ではなく、特定のソースフォルダーに設定することができます。
SystemPropertiesタグよりもmaven arglineタグを優先する理由について詳しく知りたい場合は、次の例をご覧ください。