【问题标题】:Any one able to run parallel tests: Using Cucumber 6.10.2 or newer versions, cucumber-Spring, Junit 4.13.2 and Mavensurefire 3.0.0.M3 and above任何能够运行并行测试的人:使用 Cucumber 6.10.2 或更新版本、cucumber-Spring、Junit 4.13.2 和 Mavensurefire 3.0.0.M3 及更高版本
【发布时间】:2022-11-19 02:10:03
【问题描述】:

使用以下版本组合,通过 surefire 的并行执行无法正常工作。如果我们将 Cucumber 更改为 4.8.1,则可以通过 surefire 进行并行执行。

**Cucumber 6.10.2 或更新版本、cucumber-Spring、Junit 4.13.2 和 Maven surefire 3.0.0.M3 及更高版本**

但是一旦把cucumber版本改成6.10.2就不行了。具体问题是,webdriver 会话在线程之间泄漏,或者简单地说,多个线程作用于同一个 webdriver 会话。

我做了很多研究并在 POM 中尝试了多种配置,但它没有用:试用 1.从 cucumber-junit 中排除了 junit-jupiter 和 jupiter-vintage-engine,从 cucumber-Spring 中排除了 junit-jupiter 和 jupiter-vintage-engine,向 surefire 插件添加了 surefire-junit47 依赖项试用 2.添加了 jupiter-vintage-engine 作为对 surefire 插件的依赖试验 3.使用 Spring Boot 版本 2.6.2、Cucumber 6.10.2 或更新版本、cucumber-Spring、Junit 5 和 surefire 3.0.0.M7

将不胜感激任何帮助。

【问题讨论】:

    标签: multithreading junit4 maven-surefire-plugin cucumber-junit cucumber-spring


    【解决方案1】:

    如果我们将 Cucumber 更改为 4.8.1,则可以通过 surefire 进行并行执行。 但是一旦把cucumber版本改成6.10.2就不行了。

    项目通常会发布包含所有相关更改的更改日志。升级主要版本时应参考它。

    https://github.com/cucumber/cucumber-jvm/blob/main/CHANGELOG.md

    具体问题是,webdriver 会话在线程之间泄露,或者简单地说,多个线程作用于同一个 webdriver 会话。

    这是Spring的一个特点!使用 Spring 时,您将在所有测试之间共享相同的应用程序上下文。

    您可以通过使用 Web 驱动程序将 bean 标记为场景范围来防止这种情况。

    @Component
    @ScenarioScope
    public class WebDriverComponent {
    
        private WebDriver driver = // create WebDriverhere
    
        public WebDriver getDriver() {
            return driver;
        }
    
    } 
    
    

    https://github.com/cucumber/cucumber-jvm/tree/main/cucumber-spring#sharing-state

    如果你想在同一个线程的场景之间重用 WebDriver,你可以使用本地线程:

    @Component
    @ScenarioScope
    public class WebDriverComponent {
    
        private static ThreadLocal<WebDriver> driver = ThreadLocal.withInitial( create WebDriverhere );
    
        public WebDriver getDriver() {
            return driver.get();
        }
    
    } 
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-27
      • 2010-09-20
      • 2020-01-26
      • 2017-10-08
      • 2019-02-17
      相关资源
      最近更新 更多