如何将Spring整合到黄瓜中

我目前正在尝试将Spring集成到我的Cucumber测试中。 我有一个自定义的SpringFactory,如下所述:

http://www.zsoltfabok.com/blog/2012/01/cucumber-jvm-di/

但是代码没有被调用。 用我的测试“连接”工厂的最佳方法是什么?

[澄清删除回答的评论:主要问题是我的测试有Cucumber作为主要运行者,即@RunWith(Cucumber.class)所以不能在这里使用SpringJUnit4ClassRunner。 这在上面的链接中描述,但没有描述如何读取cucumber.xml。 我添加了一个新的SpringFactory,但它没有读取XML文件….]

更新:实际上还有一点补充:

 info.cukes cucumber-spring 1.0.0.RC15  

但是,由于测试由Cucumber运行,我有@Autowired变量没有被注入。

有没有其他人有这个问题?

谷歌快速搜索“黄瓜spring融合”带来了我这里和这里 。 如果您正在使用cuke4duke这看起来更简单。

该示例似乎表明,默认情况下, cuke4duke将从类路径的基础加载cucumber.xml 。 这是一个Spring配置文件,必须包含使用@StepDefinition注释的类的component-scan

您不需要提供SpringFactory ,您不需要使用@RunWith注释,只需提供一些Spring配置和一个或多个jvm属性。

更新:cuke4duke项目现已过时,已被Cucumber-JVM取代。

我也有同样的问题,根本原因是在royal-spring-1.1.5.jar中SpringFactory没有读取cucumber.xml。 Spring DI无声地失败导致NPE。 自提交448以来,Cucumber SpringFactory不再加载cucumber.xml,您需要在所有步骤定义类中包含@ContextConfiguration("classpath*:cucumber.xml")

我刚看到你的问题。 很可能缺少cucumber-spring模块依赖。 我已经更新了存储库,现在所有依赖项都应该没问题(我正在使用常春藤)。

问题是某些版本的Spring仅适用于某些版本的Cucumber-Spring和Cucumber-JVM。 寻找获胜组合可能需要两天时间摆弄jar版本。 所以从一个“Hello World”BDD场景开始,它使用你知道可以工作的简单注入,因为你需要调整这些jar子,直到你得到一个有效的环境。

最简单的方法是将最新版本的Spring与最新版本的Cucumber-Spring相匹配。 Spring的新版本得到了更好的支持。 如果你不能简单地升级你的spring,那么使用描述不同版本的Cucumber-Spring和你正在使用的Spring版本之间的maven依赖关系的网站。

如果你想坚持你的旧版Spring(糟糕的想法,改变的痛苦只会变得更糟)另一个策略是使用JBehave进行BDD测试。