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,即在我的跑步者类注释中的粘合路径中添加了配置包。
这是 CucumberSpringConfiguration 类内容的屏幕截图:
只是一个额外的信息:
https://github.com/cucumber/cucumber-jvm/pull/1959删除了上下文配置自动发现。作者的结论是,它隐藏了用户错误,将其删除将提供更多清晰度并降低复杂性。它还列出了上下文配置自动发现所适用的场景。
请注意,它是在您提到的https://github.com/cucumber/cucumber-jvm/pull/1911之后引入的。
| 归档时间: |
|
| 查看次数: |
30181 次 |
| 最近记录: |