作为更新的一部分,我不得不从版本1.2.4的info.cukes的cucumber-java迁移到版本4.2.2的io.cucumber的cucumber-java,但是使用旧版黄瓜成功运行的代码开始抛出错误,说导入cucumber.api.java.en.Given(或者当/然后)无法解析
下面是执行开始的黄瓜类
{
@RunWith(Cucumber.class)
@CucumberOptions(features = "classpath:features/functional/",
glue = {"com.jacksparrow.automation.steps_definitions.functional" },
tags = { "@guest_search_in_progress" },
plugin = { "pretty","json:target/cucumber-json/cucumber.json",
"junit:target/cucumber-reports/Cucumber.xml", "html:target/cucumber-
reports"},
strict = false,
dryRun = false,
monochrome = true)
public class FunctionalRunCuke {
}
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-core</artifactId>
<version>4.2.2</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>4.2.2</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>4.2.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-jvm-deps</artifactId>
<version>1.0.6</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>gherkin</artifactId>
<version>6.0.14</version>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.10.19</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-testng</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-picocontainer</artifactId>
<version>2.1.0</version>
<scope>test</scope>
</dependency>
}
请建议我该怎么做才能解决这个问题
请在POM中使用以下依赖项,并根据您的框架要求添加JUnit / TestNG依赖项。 (只需将v.4.2.3改为V.4.2.2)
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>4.2.3</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>4.2.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>datatable</artifactId>
<version>1.1.12</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-testng</artifactId>
<version>4.2.3</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-picocontainer</artifactId>
<version>4.2.3</version>
<scope>test</scope>
</dependency>
首先,删除cucumber-jvm-deps
和gherkin
依赖项,因为它们可能会干扰黄瓜4.2.2的传递依赖性。其次,如果你想将Cucumber与JUnit一起使用,你还需要导入Junit(v4.12;因为Cucumber尚不支持v5)。并且您将要删除cucumber-testng
依赖项(反之亦然,如果您想使用TestNg,删除cucumber-junit
并且您可能需要TestNg依赖项)。最后,如果导入语句的位置在新的Cucumber版本中已更改,则可能需要更新导入语句。
问题是因为使用了错误的黄瓜依赖集。下面是迁移到4.0.0时应使用的正确的Cucumber依赖项集,请注意 - 1.所有Cucumber依赖项应具有相同的版本。 2.根据您的框架要求使用JUnit或TestNG。