如何并行运行Cucumber Junit测试,而不在调用的线程之间共享数据



我正在使用下面的maven配置并行运行黄瓜测试:

<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>3.0.0-M5</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<includes>
<include>TestRunner.java</include>
</includes>
<testFailureIgnore>true</testFailureIgnore>
<parallel>methods</parallel>
<threadCount>${parallelCount}</threadCount>
<forkCount>${parallelCount}</forkCount>
<reuseForks>false</reuseForks>
<perCoreThreadCount>false</perCoreThreadCount>
</configuration>
</plugin>
</plugins>

版本:

<serenity.version>3.2.0</serenity.version>
<cucumber.version>7.2.3</cucumber.version>
<junit.version>4.13.2</junit.version>

现在的问题是代码运行良好,测试并行运行,但静态变量在线程之间共享,即使使用reuseForks = False

尝试了各种组合的failsafe配置并行,perCoreThreadCount,使用unlimitedthreads,重用fork,但没有运气。

是否知道需要做些什么更改以使静态数据不会在线程之间共享。谢谢!

知道需要做什么更改才能使静态数据在线程之间不共享吗?谢谢!

从根本上说,静态字段只有一个属性。这意味着你不能拥有一个不被所有线程共享的静态字段。

相反,你可能想看看使用依赖注入。这将允许您通过向步骤定义文件中注入数据来避免使用静态字段。这些数据将限定在一个场景中,不会泄漏(当然,除非您使用静态字段)。

相关内容

  • 没有找到相关文章