指定测试用例不使用 Cucumber 与 Spring 中的 TestNG 运行器并行运行

问题描述 投票:0回答:2

我已经能够使用 TestNG 运行程序将项目配置为并行运行测试用例;然而,有一些场景不是很线程安全。如果这些测试用例并行运行,它们就会相互干扰。现在有几种方法可以使这些场景线程安全,但我想知道是否有一种方法可以指定这些 Cucumber 场景不并行运行。

我可以配置一个特定的标签来标记不并行运行的场景吗?指定某些功能文件不并行运行?我相信我可能在 JUnit 5 中遇到过类似的情况,但是 TestNG 中是否存在这种情况?

java spring automation cucumber testng
2个回答
2
投票

与 JUnit 5 不同,TestNG 不提供如此细粒度的控制。最好的情况是,您可以创建多个运行器类,具有不同的功能选择和不同的并行/串行执行配置。


0
投票

我刚刚意识到的另一件事是我可以将线程数作为一个参数;默认为 1 个线程。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>${maven.surefire.version}</version>
    <configuration>
        <testFailureIgnore>true</testFailureIgnore>
                    <properties>
                        <property>
                            <name>dataproviderthreadcount</name>
                            <value>1</value>
                        </property>
                    </properties>
                    <includes>
                        <include>api.automation.tests.runners.TestNGRunnerTest</include>
                    </includes>
    </configuration>
</plugin>

我有一个 Jenkins 构建,其中所有测试都标记为相同名称,可以与所需的线程数并行运行。

mvn clean test -Dcucumber.filter.tags="${CucumberFilterTag} and not @opentofix" -Dspring.profiles.active=${Environment} -Ddataproviderthreadcount=4

在另一个版本中,我有一个非常相似的命令(具有不同的标签),只是没有添加参数;使用默认的只有一个线程。这将一次运行所有这些标记的测试。

mvn clean test -Dcucumber.filter.tags="${CucumberFilterTag} and not @opentofix" -Dspring.profiles.active=${Environment}

无论哪种方式,第一个答案仍然有效,但只是想添加这种可能性。

© www.soinside.com 2019 - 2024. All rights reserved.