簡體   English   中英

如何在每個測試類都有自己的並行JVM的情況下運行Maven surefire?

[英]How to run Maven surefire where each test class has its own parallel JVM?

無論我在Maven + Surefire中使用什么設置,我都看不到在我的流程管理器中生成的多個JVM。 我有一台帶有8個物理內核的Windows 7 PC。 我正在運行最新的Maven / Surefire / JUnit和JDK8(32位)。

我嘗試將每個測試分解為每個測試類一個測試。 (我讀到JVM只是為測試類生成的,而不是測試方法。)盡管如此,我從未在流程管理器中看到多個JVM。

理想情況下,我希望每個測試類並行運行一個單獨的JVM-8(每個核心一個/不重用JVM)。

Maven Surefire設置需要什么?

以下內容對我不起作用:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>${maven-surefire-plugin.version}</version>
            <configuration>
                <includes>
                    <include>${default.test.suite}</include>
                </includes>
                <reuseForks>false</reuseForks>
                <forkCount>1.0C</forkCount>
                <parallel>classes</parallel>
                <threadCount>1</threadCount>
<!--
                <useUnlimitedThreads>true</useUnlimitedThreads>
                <parallelOptimized>false</parallelOptimized>
-->
            </configuration>
        </plugin>

(我嘗試了reuseForksforkCountparallelthreadCountuseUnlimitedThreadsparallelOptimized各種組合。)

如果您正在使用JUnit,首先“並行”僅適用於TestNG,其他一些屬性也是如此,因此它們對您沒有幫助/興趣:

這是在JUnit設置中對我們有用的東西(不適用於剛剛發布的TestNG: 與surefire並行運行測試並使用TestNG Jenkins插件正確顯示它們 ):

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <reuseForks>false</reuseForks>
    <forkCount>2.5C</forkCount>
  </configuration>
</plugin>

所以我認為你需要增加你的forkCount(forkCount = 1.0你不會得到並行的東西)。

作為參考,這里有關於並行運行測試的小打印(包括forkCount解釋和示例):

暫無
暫無

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

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