2011-01-14 63 views
3

我知道支持並行運行JUnit或TestNG測試套件,但它需要特定的配置(例如指定線程計數),最重要的是不會阻止非線程安全代碼中的競爭條件。運行JUnit/TestNG測試套件時,是否有任何* real *解決方案可以利用多個內核?

是否有任何JVM的工具可以透明地(即沒有顯式配置)將不同的CPU核心(在同一進程或不同進程中使用不同的線程)分配給不同的CPU核心,同時避免線程安全的競爭條件?

如果不存在這樣的工具,那麼實現它的最佳方法是什麼?

+0

幾個進程肯定會阻止競態條件 – 2011-01-14 13:26:00

+0

是的,很明顯,但是有沒有基於Java的工具可以爲JUnit/TestNG測試套件做到這一點? – 2011-01-14 13:36:36

回答

0

我強烈的建議是與通常的JUnit/TestNG工具同時運行測試。

原因很簡單:如果測試由於競爭條件失敗,那麼測試做了它的工作完美 - 它已經確定了錯誤在你的設計,代碼或併發的假設,你應該可以解決。

任何由多個測試線程同時使用的非線程安全的(例如,在全局基礎上使用的可變靜態單例對象)可能是一個設計缺陷 - 您應該使其線程安全或每次將其分別初始化爲本地對象。

相關問題