簡體   English   中英

使用maven surefire插件運行多個測試類

[英]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 = allthreadCountSuitesthreadCountClassesthreadCountMethods之間的比例是2:3:5,並發類中有30%的threadCount。
  • 與前一種情況一樣,但沒有這個葉子線程計數。 示例: parallel = suitesAndClassesthreadCount = 16, threadCountSuites = 5,threadCountClasses是未指定的葉,並發類的數量從> = 11到14或15 threadCountSuites變為線程數。

只有與並行參數一起使用才有意義。 默認值0的行為與未指定的值相同。

在你的情況下你沒有指定threadCount元素,因此你應該屬於第一種情況(並發類的數量),但是它似乎並非如此。

第三種情況和第四種情況相反定義了一個比率(而不是一個特定的數字),因為它似乎發生在你的情況下。 但是,比率取決於您的測試類(套件,如果有的話,類和方法),而不取決於您的CPU核心。

但是, perCoreThreadCount配置條目:

表示threadCountthreadCountSuitesthreadCountClassesthreadCountMethods是每個cpu核心。

默認設置為true ,有效地影響上述動態並匹配您描述的行為(根據上面的選項1)。

因此,建議將其設置為false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM