猿问

使用 Spring Cucumber Serenity 的 AutoWiring 步骤

我无法自动连接一些步骤。为了说明这一点,我在github上做了一个小示例项目

https://github.com/lpicquet/serenity-cucumber-spring

我正在尝试自动连接步骤,以便我可以在它们之间共享数据,但测试当前失败。任何人都可以帮忙吗?


弑天下
浏览 154回答 1
1回答

手掌心

问题是您使用的是不同的 Runner。通常人们使用SpringRunner.class它来处理创建测试上下文等的能力。构造一个新的 SpringRunner 并初始化一个 TestContextManager 以向标准 JUnit 4 测试提供 Spring 测试功能。要使用不同的跑步者以及弹簧功能,您可以使用 aClassRule和 a的组合Rule@ClassRulepublic static final SpringClassRule SPRING_CLASS_RULE = new SpringClassRule();@Rulepublic final SpringMethodRule springMethodRule = new SpringMethodRule();SpringClassRule 是一个自定义的 JUnit TestRule,它通过 TestContextManager 和相关的支持类和注解在标准 JUnit 测试中支持 Spring TestContext Framework 的类级特性。与 SpringJUnit4ClassRunner 相比,Spring 基于规则的 JUnit 支持的优势在于它独立于任何 Runner,因此可以与现有的替代运行器(如 JUnit 的 Parameterized)或第三方运行器(如 MockitoJUnitRunner)结合使用。但是,为了实现与 SpringJUnit4ClassRunner 相同的功能,SpringClassRule 必须与 SpringMethodRule 结合使用,因为 SpringClassRule 仅支持 SpringJUnit4ClassRunner 的类级特性。没有这些,就无法在您的依赖类等中自动装配。我已经通过测试向您的项目添加了 PR。
随时随地看视频慕课网APP

相关分类

Java
我要回答