Maven运行Cucumber,以前,我们通过手动识别每个所需的 jar 并将其下载到 lib 目录中来设置项目,现在我们应该做的是使用构建工具来编排和控制这些依赖项。
构建工具
以前,我们通过手动识别每个所需的 jar 并将其下载到 lib 目录中来设置项目。那是很久很久以前做的事情。我们应该做的是使用构建工具来编排和控制这些依赖项。
输入Maven、Gradle甚至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)将使使用这些工具变得非常容易,并提高你的框架的能力。