我正在使用下面的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,但没有运气。
是否知道需要做些什么更改以使静态数据不会在线程之间共享。谢谢!
知道需要做什么更改才能使静态数据在线程之间不共享吗?谢谢!
从根本上说,静态字段只有一个属性。这意味着你不能拥有一个不被所有线程共享的静态字段。
相反,你可能想看看使用依赖注入。这将允许您通过向步骤定义文件中注入数据来避免使用静态字段。这些数据将限定在一个场景中,不会泄漏(当然,除非您使用静态字段)。