如何将Spring整合到黄瓜中

时间:2012-02-23 10:53:13

标签: java spring junit cucumber bdd

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

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

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

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

更新:实际上还有一点是添加:

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-spring</artifactId>
        <version>1.0.0.RC15</version>
    </dependency>   

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

还有其他人有这个问题吗?

4 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:5)

谷歌快速搜索“黄瓜春天整合”给我herehere。如果您使用的是cuke4duke,这看起来就像是一种更简单的方法。

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:-1)

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

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

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