2011-12-15 12 views
6

JUnitテストを実行すると、このエラーが発生することがあります。フォークされたJava VMは何を意味しますか?

私は、エラーの内容を正確には尋ねていません。私はちょうどそれがJava VMのフォーク時に何を意味するか知りたいですか?

+0

一般的な意味では、別のJVMでjUnitタスクを実行します。 – CoolBeans

+4

これはあなたが悪いことを起こしたことを意味します。 – Paul

+0

@Paul - lol ... – CoolBeans

答えて

19

"フォークされたVM"はエラーではありません(ただし、発生したエラーは関連している可能性があります)。

コンパイルやテスト(Mavenなど)のさまざまな側面に関わるツールには、Javaで記述され、JVMを使用して実行されるものがあります。

VMをフォークせずにアプリケーションの単体テストを実行すると、MavenはMavenが動作しているのと同じVM内でこれらのテストを実行します。したがって、特定のVM全体の設定(システムプロパティなど)の影響を受ける可能性があります。

Mavenによる副作用を避けるために、forkしたVM、つまりOSの異なるプロセスとして実行されている完全に別々のVMでテストを実行することができます。フォークVMをクラッシュ

(これは他のツールにも適用することができ、Mavenのは一例です。)

は、少なくともあなたが戻ってこれらのユニットテストを開始し、指揮し、他のJavaアプリケーションに来ることができます。同じVM内でこれらのテストを実行していた場合は、テストを開始したアプリケーションもクラッシュします(その結果、ほとんど情報が得られません)。

2

A 'fork' is Linuxでは、別のプロセス(緩く)を実行することを示すために使用される用語です。この場合、フォークされたJava VMは、ユニットテストをクラスまたはメソッドごとに分離するための子プロセスで、複数のテスト間で状態汚染が発生しないようにします。

JUnitのAntタスクは、hereのように、複数のフォークモードをサポートしています。

JUnitを使用すると、フォークされたVMが終了したというエラーが表示されています。これは、あなたのテストがであり、がクラッシュし、JUnitランナー(通常はant)が出力を取得できないことを意味します。

クラッシュの原因を解決してください。

関連する問題