cucumber-jvm从版本4升级到版本6时是否需要额外的上下文配置?

sam*_*ive 8 bdd cucumber cucumber-jvm cucumber-junit cucumber-java

我正在使用 cucumber-jvm 在 Kotlin 中执行一些功能测试。

我有标准的空跑步者课程:

@RunWith(Cucumber::class)
@CucumberOptions(features=[foo],
    glue=[bar],
    plugin=[baz],
    strict=true,
    monochrome=true)
class Whatever
Run Code Online (Sandbox Code Playgroud)

实际步骤是在另一个类中使用 @ContextConfiguration springframework 注解定义的。该类还使用其他 spring 功能,如 @Autowire 或 @Qualifier

@ContextConfiguration(locations=["x/y/z/config.xml"])
class MyClass {
    ...
    @Before
    ...

    @Given("some feature file stuff")
    ...

    // etc
}
Run Code Online (Sandbox Code Playgroud)

这一切在 Cucumber 版本 4.2.0 中都可以正常工作,但是升级到版本 6.3.0 就会出现问题。更新导入以匹配新的 Cucumber 项目布局后,测试现在失败并出现以下错误:

io.cucumber.core.backend.CucumberBackendException:请使用一些上下文配置注释胶水类。

它提供了示例来说明其含义...

例如:

    @CucumberContextConfiguration
    @SpringBootTest(classes = TestConfig.class)
    public class CucumberSpringConfiguration {}
Run Code Online (Sandbox Code Playgroud)

或者:

    @CucumberContextConfiguration
    @ContextConfiguration( ... )
    public class CucumberSpringConfiguration {}
Run Code Online (Sandbox Code Playgroud)

看起来它告诉我我可以将 @CucumberContextConfiguration 添加到 MyClass 中。

但为什么?

我明白了 @CucumberContextConfiguration 的意思,这里解释得很好,但是为什么我现在需要版本 6,而版本 4 没有它就可以正常工作了?我看不到任何已弃用并被此替换的功能。

任何帮助,将不胜感激 :)

Pra*_*kar 15

由于该错误与我在使用 Spring Boot 运行 Cucumber 测试时遇到的错误完全匹配,因此我正在分享我的修复。

可能的原因之一是:Cucumber在粘合路径中找不到CucumberSpringConfiguration类。

解决方案一:

将 CucumberSpringConfiguration 类移到粘合路径内(在我的例子中位于步骤包内)。

解决方案2:

在glue路径中添加CucumberSpringConfiguration包路径。


下面的屏幕截图描述了我的项目结构。

项目结构

正如您所看到的,我的 CucumberSpringConfig 类位于配置包下,因此当我尝试从命令提示符运行功能文件( mvn clean test)时,它会抛出错误:

“请使用一些上下文配置注释胶水类。”

所以我应用了解决方案2,即在我的跑步者类注释中的粘合路径中添加了配置包。

修复2

这是 CucumberSpringConfiguration 类内容的屏幕截图:

CucumberSpring配置

只是一个额外的信息:

要从命令提示符运行测试,我们需要在 pom.xml 中包含以下插件 从命令提示符运行测试的插件


Dan*_* Le 5

https://github.com/cucumber/cucumber-jvm/pull/1959删除了上下文配置自动发现。作者的结论是,它隐藏了用户错误,将其删除将提供更多清晰度并降低复杂性。它还列出了上下文配置自动发现所适用的场景。

请注意,它是在您提到的https://github.com/cucumber/cucumber-jvm/pull/1911之后引入的。