gpt4 book ai didi

java - TestNG 并行测试配置

转载 作者:行者123 更新时间:2023-12-04 05:15:55 24 4
gpt4 key购买 nike

使用 Java 6 上的 TestNG,这是我想在我的 Maven 项目中执行的操作:

  • 启动一个测试方法( testAbc ),它可以使用基于队列的 DataProvider 运行多线程
  • 启动依赖于 testAbc 的测试( testXyz ) 在来自 testAbc 的所有线程之后完整

  • 我以为我已经正确配置了它,但我没有。

    目前我已将其配置为:
    @Test ( singleThreaded = false )
    public class AutomatedTest {

    @Test (
    alwaysRun = true,
    dataProviderClass = UseCaseProvider.class,
    dataProvider = "getUseCasesNoDependencies",
    skipFailedInvocations = false,
    threadPoolSize = 25
    )
    public void testAbc(UseCase useCase) {
    executeUseCase(useCase);
    }

    @Test (
    dependsOnMethods = {"testAbc"},
    dataProviderClass = UseCaseProvider.class,
    dataProvider = "getUseCasesDependencies",
    singleThreaded = true
    )
    public void testXyz(UseCase useCase) {
    executeUseCase(useCase);
    }
    }
    testAbc 中的所有测试由 @DataProvider 提供需要很长时间才能运行,但最多可以同时运行 25 个(有几百个)。一切尽在 testXyz不能并行运行,因为不仅所有情况都依赖于 testAbc ,但这种处理对线程池并不友好。

    我的 Maven 配置设置如下:
    <build>
    <plugins>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
    <parallel>methods</parallel>
    <threadCount>25</threadCount>
    </configuration>
    </plugin>
    </plugins>
    </build>

    当我跑 mvn -U test我没有看到我的测试实际上并行运行。
    帮助!
    $ mvn -version
    Apache Maven 2.2.1 (r801777; 2009-08-06 15:16:01-0400)
    Java version: 1.6.0_35
    Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
    Default locale: en_US, platform encoding: MacRoman
    OS name: "mac os x" version: "10.7.5" arch: "x86_64" Family: "mac"

    最佳答案

    添加threadPoolSize怎么样?

    @Test ( singleThreaded = false, threadPoolSize = 5 )
    public class AutomatedTest {
    ...
    threadPoolSize属性允许您指定应该为此执行分配多少线程。

    编辑

    刚注意到你错过了 invocationCount .请注意 threadPoolSize如果 invocationCount 被忽略未指定。

    因此,请尝试将 @Test 类保持原样并更新 testAbc
      @Test (
    alwaysRun = true,
    dataProviderClass = UseCaseProvider.class,
    dataProvider = "getUseCasesNoDependencies",
    skipFailedInvocations = false,
    threadPoolSize = 25,
    invocationCount = 25
    )
    public void testAbc(UseCase useCase) {
    executeUseCase(useCase);
    }

    关于java - TestNG 并行测试配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14267528/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com