将 Cucumber 4.5.x 升级到 v5.0.0

kak*_*ret 1 cucumber maven cucumber-jvm selenium-webdriver cucumber-java

我正在尝试将 Cucumber 4.5.x 的旧测试框架升级到更新版本。该项目是 Maven、IntelliJ、Java、Selenium 和 Cucumber 项目。

但 Cucumber 似乎要么故意误导我,要么他们的文档对我来说难以理解。

首先,我升级到版本 5.0.0,重新加载 Maven 依赖项并执行 mvn clean install。

我立即发现

import io.cucumber.core.api.Scenario was gone. 
Run Code Online (Sandbox Code Playgroud)

经过一番手动搜索,我发现新的路径似乎是

import io.cucumber.core.gherkin.Scenario;
Run Code Online (Sandbox Code Playgroud)

然后我去了6.0.0版本,这里似乎没有任何场景库。

查看文档,似乎声称 Scenario 位于

io.cucumber.java.Scenario
Run Code Online (Sandbox Code Playgroud)

但这对于 4.5.x 版本来说甚至都不正确,那么我到底如何找到导入的新路径呢?

更新:

在尝试升级之前,我的插件列表中有以下内容:

io.cucumber:cucumber-core:4.5.2
io.cucumber:cucumber-expressions:7.0.2
io.cucumber:cucumber-dependencies:1.1.14
io.cucumber:cucumber-datatable_1.1.14 
io.cucumber:cucumber.gherkin:5.1.0
io.cucumber:cucumber-tag-expressions:1.1.1
Run Code Online (Sandbox Code Playgroud)

在我的 pom.xml 中:

<properties>
    <java.version>11</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <selenium.version>4.3.0</selenium.version>
    <cucumber.version>4.5.2</cucumber.version>
    <junit5.version>5.5.1</junit5.version>
</properties>
Run Code Online (Sandbox Code Playgroud)

更改 pom.xml 中的版本号并重新加载是正确的方法吗?或者我应该用项目插件列表中的较新版本替换该插件(在 IntelliJ 中)?

我应该升级任何其他 cucumber-x 插件吗?

替代方案 1:

我在 pom.xml 文件中将版本更改为 5.0.0。

  • 其他黄瓜插件的插件版本会自动更新。

构建项目:确定运行 mvn clean install -> 出现以下错误:

cannot find symbol
[ERROR]   symbol:   class Scenario
[ERROR]   location: package io.cucumber.core.api
Run Code Online (Sandbox Code Playgroud)

当然,这是由于图书馆的变化造成的。

但是,当我尝试更换旧的

import io.cucumber.core.api.Scenario
Run Code Online (Sandbox Code Playgroud)

import io.cucumber.java.Scenario
Run Code Online (Sandbox Code Playgroud)

没有 .java 的匹配项。

我看不出我还能做什么?我错过了哪些导入,除了更新 pom.xml 和/或导入新插件之外,如何添加它们?

mpk*_*nje 5

从 v4 到 v5 的跳跃相当大。造成这种情况的一个因素是模块系统的引入。您可以在发行说明文件夹中阅读有关此更改和其他更改的更多信息。

因此,对于 v5.x 及更高版本,假设您正在使用cucumber-java,则正确的导入是io.cucumber.java.Scenario. 如果您正在使用,cucumber-java8那么正确的导入是io.cucumber.java8.Scenario.

这两个导入均未显示,这表明您可能尚未将所有依赖项升级到同一版本。您可以使用mvn dependency:tree -Dverbose它来调试。

更高版本还引入了物料清单,以帮助您保持依赖项与单个版本号一致。