首页 > Java > java教程 > 如何在不同浏览器和标签下并行执行Cucumber特征文件?

如何在不同浏览器和标签下并行执行Cucumber特征文件?

Barbara Streisand
发布: 2024-10-29 16:49:02
原创
1050 人浏览过

How to execute Cucumber feature files in parallel with different browsers and tags?

并行执行 Cucumber 特征文件

问题: 需要并行执行多个 Cucumber 特征文件,每个特征文件与不同的标签相关联,将特定文件分配给特定浏览器。

解决方案:

利用开源cucumber-jvm-parallel-plugin提供了一个功能-用于并行黄瓜测试执行的丰富解决方案。

  1. 插件配置:

将以下插件配置添加到项目的 Maven pom 文件中:

<code class="xml"><dependency>
    <groupId>com.github.temyers</groupId>
    <artifactId>cucumber-jvm-parallel-plugin</artifactId>
    <version>2.1.0</version>
</dependency>
<plugin>
    <groupId>com.github.temyers</groupId>
    <artifactId>cucumber-jvm-parallel-plugin</artifactId>
    <version>2.1.0</version>
    <executions>
        <execution>
            <id>generateRunners</id>
            <phase>generate-test-sources</phase>
            <goals>
                <goal>generateRunners</goal>
            </goals>
            <configuration>
                <glue>foo, bar</glue>
                <outputDirectory>${project.build.directory}/generated-test-sources/cucumber</outputDirectory>
                <featuresDirectory>src/test/resources/features/</featuresDirectory>
                <cucumberOutputDir>target/cucumber-parallel</cucumberOutputDir>
                <format>json</format>
                <strict>true</monochrome>true</strict>
                <tags>@chrome,@firefox</tags>
                <filterFeaturesByTags>false</filterFeaturesByTags>
                <useTestNG>false</useTestNG>
                <namingScheme>simple</namingScheme>
                <parallelScheme>SCENARIO</parallelScheme>
            </configuration>
        </execution>
    </executions>
</plugin></code>
登录后复制
  1. 添加第二个插件:

添加另一个插件,该插件将调用上一个插件生成的运行器类:

<code class="xml"><plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19</version>
    <configuration>
        <forkCount>5</forkCount>
        <reuseForks>true</reuseForks>
        <includes>
            <include>**/*IT.class</include>
        </includes>
    </configuration>
</plugin></code>
登录后复制

共享 WebDriver 类:

实现共享 WebDriver 类:

<code class="java">public class SharedDriver extends EventFiringWebDriver {

    // Singleton WebDriver instance
    private static WebDriver REAL_DRIVER = null;

    // Closing hook for WebDriver
    private static final Thread CLOSE_THREAD = new Thread() {
        @Override
        public void run() {
            REAL_DRIVER.close();
        }
    };

    // WebDriver setup
    static {
        Runtime.getRuntime().addShutdownHook(CLOSE_THREAD);
    }

    public SharedDriver() {
        super(CreateDriver());
    }

    public static WebDriver CreateDriver() {
        if (REAL_DRIVER == null)
            REAL_DRIVER = new FirefoxDriver();
        setWebDriver(REAL_DRIVER);
        return REAL_DRIVER;
    }

    public static void setWebDriver(WebDriver webDriver) {
        SharedDriver.REAL_DRIVER = webDriver;
    }

    public static WebDriver getWebDriver() {
        return SharedDriver.REAL_DRIVER;
    }

    // Disable closing for shared driver
    @Override
    public void close() {
        if (Thread.currentThread() != CLOSE_THREAD) {
            throw new UnsupportedOperationException("Closing is handled by shutdown hook.");
        }
        super.close();
    }
}</code>
登录后复制

注意事项:

  • fork 计数(并行线程)的数量应与可用硬件资源和注册节点保持一致。
  • Grid Hub 必须以 -DPOOL_MAX=512 或更高级别启动才能执行大量(>50)线程并行。

以上是如何在不同浏览器和标签下并行执行Cucumber特征文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板