2016-02-23 287 views
2

我想並行運行我的集成測試,以便: *每個測試方法由不同的JVM *運行,每使用一個線程運行Maven集成測試

後閱讀the surefire docs我想用的:

mvn test -DforkCount=2 -DreuseForks=false -Dparallel=methods -DthreadCount=1 

,但我的測試中出現失敗(當然,只運行mvn test運行它們按順序不會失敗)

任何我DEA如何實現多進程單線程?

+0

Offtop:你爲什麼需要這個? – coolguy

+0

我有一些遺留代碼需要改進其性能。而其中一些代碼不是線程安全的,我的城市只有50%的加載。 – Amnon

+1

首先,我會建議理解爲什麼他們失敗的原因,如果這些測試是單元測試,他們應該工作......也許你正在做不乾淨的單元測試更多的集成測試... – khmarbaise

回答

0

Surefire插件在forkCount單獨JVM進程執行不同的類,使用每個JVM threadCount線程和如果parallel=methods然後每個方法將給出一個線程。換句話說,每個分叉被賦予一個類,每個方法被賦予一個線程。您不能在方法分叉之間映射。

Surefire's page, paragraph on combining forkCount and parallel

然而,可以使用並行=方法:類在forkCount併發進程執行,則每個處理可以使用THREADCOUNT線程並行地執行一個類的方法。

TestNG的在案件以下標註它可以幫助:
@Test(threadPoolSize = 3, invocationCount = 6, timeOut = 1000)

編輯:剛剛看了評論:
你必須讓你的單元測試糾正,然後再加速執行向上。