Maven运行Cucumber,以前,我们通过手动识别每个所需的 jar 并将其下载到 lib 目录中来设置项目,现在我们应该做的是使用构建工具来编排和控制这些依赖项。

构建工具

以前,我们通过手动识别每个所需的 jar 并将其下载到 lib 目录中来设置项目。那是很久很久以前做的事情。我们应该做的是使用构建工具来编排和控制这些依赖项。

输入MavenGradle甚至Ant等工具。这些工具不仅可以帮助构建您的软件,还可以构建您的测试并管理它们的依赖关系。因此,与其下载所需的 Cucumber 库,不如在我们的构建工具中识别它们。对于此示例,我们将使用 Maven,但将这些相同的添加块应用于任何其他工具非常简单。

理想情况下,您的测试将集成到与开发的应用程序相同的项目中,因此应该已经存在一个pom.xml文件。要做的第一件事是将 Cucumber 添加为依赖项。只需更新您的pom.xml文件以包含(或将dependency块添加到您当前的依赖项):

<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-jvm -->
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-jvm</artifactId>
    <version>2.0.0</version>
    <type>pom</type>
</dependency>

<!-- https://mvnrepository.com/artifact/info.cukes/cucumber-testng -->
<dependency>
    <groupId>info.cukes</groupId>
    <artifactId>cucumber-testng</artifactId>
    <version>1.2.5</version>
</dependency>

我个人更喜欢使用基于 TestNG 构建的 Cucumber,但如果您更愿意使用基于 JUnit 构建的 Cucumber,切换起来很容易,这只是一个简单的依赖项更改(比以前容易得多)。无需下载,无需其他设置。

Maven运行Cucumber扩展功能

但如果仅此而已,这将非常Low,对吧?幸运的是,还有一些办法使用它们,则无需担心;只需将依赖项添加到您的pom.xml文件即可。

<!-- https://mvnrepository.com/artifact/info.cukes/cucumber-picocontainer -->
<dependency>
    <groupId>info.cukes</groupId>
    <artifactId>cucumber-picocontainer</artifactId>
    <version>1.2.5</version>
</dependency>

就像复制/粘贴一样简单!如果您想要Selenium 依赖项,只需添加另一个块。

<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>${selenium.version}</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-server -->
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-server</artifactId>
    <version>${selenium.version}</version>
</dependency>

<!-- https://mvnrepository.com/artifact/io.github.bonigarcia/webdrivermanager -->
<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>3.3.0</version>
</dependency>

你会注意到我在这里添加了一个 webdrivermanager依赖项。

Maven运行Cucumber开箱即用

我最讨厌的事情之一一直是 Cucumber 测试执行的并行化。有一些丑陋的方法可以做到这一点,但是,它们需要多个自定义运行器来完成它并且变得无法快速维护(想想每个功能甚至场景一个运行器)。幸运的是,有更好的方法!

temyers有一个很棒的 Maven 插件可以自动生成测试运行程序。因此您不需要这样做,这个插件会为您创建这一切。更少的代码=更好!您需要做的就是在您的pom.xml文件中添加一个插件。

<plugin>
    <groupId>com.github.temyers</groupId>
    <artifactId>cucumber-jvm-parallel-plugin</artifactId>
    <version>4.2.0</version>
    <executions>
        <execution>
            <id>generateRunners</id>
            <phase>generate-test-sources</phase>
            <goals>
                <goal>generateRunners</goal>
            </goals>
            <configuration>
                <glue>
                    <package>com.coveros</package>
                </glue>
                <plugins>
                    <plugin>
                        <name>json</name>
                    </plugin>
                    <plugin>
                        <name>html</name>
                    </plugin>
                </plugins>
                <useTestNG>true</useTestNG>
                <namingScheme>feature-title</namingScheme>
                <parallelScheme>SCENARIO</parallelScheme>
                <tags>
                    <tag>~@wip</tag>
                </tags>
            </configuration>
        </execution>
    </executions>
</plugin>

就这样!现在,每个场景和每个场景都可以愉快地并发运行。

总结

所以,有很多很棒的插件可以用于你的 Cucumber 代码,使用 Maven(或 Gradle 或 Ant)将使使用这些工具变得非常容易,并提高你的框架的能力。

相关

使用Maven进行单元测试