【问题标题】:AutoWiring steps with Spring Cucumber Serenity使用 Spring Cucumber Serenity 进行自动装配步骤
【发布时间】:2018-08-29 16:33:50
【问题描述】:

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

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

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

【问题讨论】:

标签: java spring testing cucumber-jvm serenity-bdd


【解决方案1】:

问题是您使用的是不同的 Runner。通常人们使用SpringRunner.class 来处理创建测试上下文等的能力。

构造一个新的 SpringRunner 并初始化一个 TestContextManager 以向标准 JUnit 4 测试提供 Spring 测试功能。

要使用不同的跑步者以及弹簧功能,您可以结合使用 ClassRuleRule

@ClassRule
public static final SpringClassRule SPRING_CLASS_RULE = new SpringClassRule();

@Rule
public 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。

【讨论】:

  • 黄瓜-弹簧集成创建TestContextManager。所以我不认为需要类规则或实际做任何事情。
  • 这对任何人都有效吗?我可以看到已标记的答案,但没有投票。我一直在努力解决同样的问题:让 Serenity-Cucumber-Spring 一起工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-28
相关资源
最近更新 更多