[英]Running multiple test classes with maven surefire plugin
我正在嘗試使用maven-surefire-plugin中的parallel選項一次運行多個測試類。 以下是我的配置:
<configuration>
<argLine>-Xmx1024m -XX:MaxPermSize=1024m</argLine>
<excludes>
<exclude>**/Test*.java</exclude>
</excludes>
<runOrder>hourly</runOrder>
<parallel>classes</parallel>
<threadCountClasses>5</threadCountClasses>
</configuration>
很明顯它正在進行並行測試,但它的功能遠遠超出我的預期。 盡管threadCountClasses設置為5,我看到它一下子跳到大約40個測試類,我誤解了這些選項是如何工作的? 我的願望是在任何時候只執行五個測試類。 事實上,它讓我的系統窒息了40。
我目前正在運行該插件的2.17版本。
編輯 :CPU內核的數量是否有可能在這里發揮作用? 經過更仔細的計算,我意識到我正在運行這個配置的40個測試類,我有8個核心。 如果CPU核心沒有發揮作用,這似乎是巧合。
根據threadCountClasses
配置條目的官方文檔
此屬性允許您指定測試類中的並發性,即:
- 如果
threadCount
為0或未指定,threadCount
並發類的數量- 如果
useUnlimitedThreads
設置為true
則限制類並發- 如果
threadCount
和某些線程計數參數對於並行是> 0,則並發性是根據比率計算的。 例如,parallel
=all
和threadCountSuites
:threadCountClasses
:threadCountMethods
之間的比例是2:3:5,並發類中有30%的threadCount。- 與前一種情況一樣,但沒有這個葉子線程計數。 示例:
parallel
=suitesAndClasses
,threadCount
= 16,threadCountSuites
= 5,threadCountClasses是未指定的葉,並發類的數量從> = 11到14或15threadCountSuites
變為線程數。只有與並行參數一起使用才有意義。 默認值0的行為與未指定的值相同。
在你的情況下你沒有指定threadCount
元素,因此你應該屬於第一種情況(並發類的數量),但是它似乎並非如此。
第三種情況和第四種情況相反定義了一個比率(而不是一個特定的數字),因為它似乎發生在你的情況下。 但是,比率取決於您的測試類(套件,如果有的話,類和方法),而不取決於您的CPU核心。
但是, perCoreThreadCount
配置條目:
表示
threadCount
,threadCountSuites
,threadCountClasses
,threadCountMethods
是每個cpu核心。
默認設置為true
,有效地影響上述動態並匹配您描述的行為(根據上面的選項1)。
因此,建議將其設置為false
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.