我们有几个共享常用步骤的功能文件。 例如,登录是最简单的步骤,如果我想获取登录步骤创建并在LoginStepDefinitions.java文件中设置的用户对象。 在我的背景下,是否有某种途径可以访问这个课程'变量,我可以自动装配另一个步骤定义吗?
答案 0 :(得分:2)
是的,你可以。使用Context Injection
。 Cucumber支持许多依赖注入框架,如Spring,Guice和Picocontainer。因此,您可以使用这些框架中的任何一个来自动装配对象。
让我们将小黄瓜文本称为步骤,将其实现称为步骤定义以避免混淆。我们假设您有两个功能文件login.feature和product.feature。它们的相应实现位于LoginStepDef.java
和ProductStepDef.java
。现在我们假设您已经重复login.feature
中product.feature
的步骤。在这种情况下,您应该执行inject
context
所需的stepdef,即在LoginStepDef
中注入ProductStepDef
个对象。 Cucumber将在内部使用此上下文对象(注入的LoginStepDef对象)来调用您要从login.feature重用的步骤。在getter
中使用getUser()
方法,例如LoginStepDef
。现在使用LoginStepDef
中注入的ProductStepDef
对象来获取User对象或LoginStepDef
中创建/公开的对象。
答案 1 :(得分:1)
nilesh的答案很接近,但为了更加模块化,您可以将步骤定义彼此分开,并将上下文感知对象注入其中。黄瓜可以在每种情景之前保证国家的清洁。