如何在没有冗余的情况下访问通过Java中的Gherkin步骤定义创建的公共变量?

时间:2014-05-15 09:41:44

标签: java spring cucumber cucumber-jvm gherkin

我们有几个共享常用步骤的功能文件。 例如,登录是最简单的步骤,如果我想获取登录步骤创建并在LoginStepDefinitions.java文件中设置的用户对象。 在我的背景下,是否有某种途径可以访问这个课程'变量,我可以自动装配另一个步骤定义吗?

2 个答案:

答案 0 :(得分:2)

是的,你可以。使用Context Injection。 Cucumber支持许多依赖注入框架,如Spring,Guice和Picocontainer。因此,您可以使用这些框架中的任何一个来自动装配对象。

让我们将小黄瓜文本称为步骤,将其实现称为步骤定义以避免混淆。我们假设您有两个功能文件login.feature和product.feature。它们的相应实现位于LoginStepDef.javaProductStepDef.java。现在我们假设您已经重复login.featureproduct.feature的步骤。在这种情况下,您应该执行inject context所需的stepdef,即在LoginStepDef中注入ProductStepDef个对象。 Cucumber将在内部使用此上下文对象(注入的LoginStepDef对象)来调用您要从login.feature重用的步骤。在getter中使用getUser()方法,例如LoginStepDef。现在使用LoginStepDef中注入的ProductStepDef对象来获取User对象或LoginStepDef中创建/公开的对象。

答案 1 :(得分:1)

nilesh的答案很接近,但为了更加模块化,您可以将步骤定义彼此分开,并将上下文感知对象注入其中。黄瓜可以在每种情景之前保证国家的清洁。