2011-12-15 37 views
6

當我運行JUnit測試時,有時會出現此錯誤。分叉java VM有什麼意義?

我並不完全問錯誤是什麼。我只是想知道當java VM分叉時它意味着什麼?

+0

在一般意義上分叉,在另一個JVM中執行jUnit任務。 – CoolBeans

+4

這意味着你分叉壞了... – Paul

+0

@保羅 - 大聲笑... – CoolBeans

回答

19

A「VM分叉」是不是一個錯誤(雖然你的錯誤,可能與它)。

中涉及的編譯和測試(如Maven的)各個方面的一些工具是用Java編寫,並使用JVM運行自己。

如果你運行你的應用程序單元測試不分叉的VM,Maven會因爲Maven的運行運行相同的虛擬機中的那些測試。因此,它可能受某些VM範圍設置(例如某些系統屬性)的影響。

爲了避免副作用,由於Maven的,它可以運行於一個叉形VM測試,即,在一個完全獨立的虛擬機中運行的操作系統中的不同過程。

(這可以適用於其他工具,Maven是隻是一個例子。)

崩潰分叉的虛擬機至少可以讓你回來到開始精心策劃這些單元測試的其他Java應用程序。如果您在同一個虛擬機中運行這些測試,那麼您也會使啓動測試的應用程序崩潰(並因此獲得很少的信息)。

2

A 'fork' is在Linux中用來表示執行另一處理(鬆散)的術語。在這種情況下,分叉Java VM是一個子進程,用於按級別或方法隔離單元測試,確保多次測試之間無狀態污染。

JUnit的ant任務支持多個分叉模式可以看出here

我看到錯誤,指出使用JUnit時分叉虛擬機已經死亡。這意味着你的測試是崩潰,你的JUnit運行器(通常是ant)不能得到任何輸出。

您應該嘗試解決崩潰的原因。