这是一种对我很有效的方法(重要提示:使用 maven 作为构建管理器)
=============================================
您需要在机器上安装 Maven 和 Firefox 才能运行此示例。
一旦您检索到源代码,您可以通过导航到 Cucumber-JVM-Parallel 目录并发出命令来运行:
mvn 全新安装
这将运行示例项目并同时启动两个浏览器窗口。每个浏览器窗口对应于示例中的一个 Cucumber 特征文件。运行完成后,将在 /target/cucumber-report/index.html 生成报告。
本文的其余部分将进一步详细介绍示例项目的结构,但假设您之前有一些 Cucumber 经验。如果没有,Cucumber-JVM 自述文件是一个很好的起点。
功能文件
您需要的第一件事是描述您期望的行为的功能文件。在此示例中,我们有两个独立的功能,但您也可以在单个功能中并行运行场景。
我们可以做的方法是使用 Cucumber 标签,它可以应用于一个特性中的所有场景,也可以应用于单个场景。
在上面,您可以看到我们有两个功能文件。它们位于“src/test/resources”文件夹中。每个功能文件都被标记(@autocorrect 和 @search),并包含一个场景。
胶水代码
现在我们已经有了我们的场景,我们需要添加一些胶水代码来将每个步骤与我们的底层测试框架联系起来
这些被称为步骤定义,可以在“src/java/cucumber.jvm.parallel/cucumber/stepdefs”中找到。
在上面的sn-p中,可以看到我们使用ShareDriver的一个实例直接与浏览器窗口进行通信。这是基于黄瓜示例之一,用于在所有测试之间共享单个浏览器会话(使用依赖注入),以消除每次测试启动浏览器实例的需要,从而加快执行速度。在我们的例子中,这导致每个线程一个浏览器会话。 ShareDriver 类可以在‘/src/test/java/cucumber.jvm.parallel/cucumber’中找到。
页面对象
sn-p 还显示我们使用了一个“SearchPageObject”实例,它只是一个代表 Google 搜索页面的类,位于“/src/test/java/cucumber.jvm.parallel/pageobjects”中。
这不是必需的,但最好使用页面对象模式来简化大型项目的可维护性。
在上面,您可以看到页面对象包含页面上元素的标识符以及特定于该页面的方法。
跑步者
流程的下一个阶段是添加测试运行器。我们使用的是 JUnit 而不是 CLI,这就是我们需要开始专门构建事物以处理并行运行测试的地方。
在上面来自‘SearchAT.class’的sn-p中,你可以看到我们正在指定特征文件的位置。我们还指定了一个标签 (@search),它与我们的黄瓜功能文件标签之一和测试结果的 html 报告目标相关。
这就是“运行所有标记为 @search 的测试并将结果写入 /search 文件夹”。
然后我们有另一个类“AutoCorrectAT”,它对所有标记为“@autocorrect”的测试执行相同的操作。这两个类都可以在“/src/test/java/cucumber.jvm.parallel/cucumber”下找到。
添加另一个线程只是添加具有不同标记的新运行器类的情况。
并行测试运行
到目前为止,这些指令与使用 WebDriver 与网站交互创建一组相对简单的非并行 Cucumber-JVM 测试相同。
我们现在需要转到 Maven POM 文件,看看我们是如何让测试并行运行的。
在上面的 sn-p 中,您可以看到 maven-surefire-plugin 用于运行我们的验收测试——任何以 *AT 结尾的类都将作为 JUnit 测试类运行。感谢 JUnit,让测试并行运行现在是设置 forkCount 配置选项的简单案例。在示例项目中,设置为 5,这意味着我们一次最多可以运行 5 个线程(即 5 个运行器类)。
=============================
更多详情您可以在Running Cucumber-JVM tests in parallel文章中获得
希望对你有所帮助。