为了在步骤之间共享共同点,您需要使用World。在Java中,它没有在Ruby中那么清晰。
引用黄瓜的创建者。
“世界”的目的是双重的:
隔离方案之间的状态。
在场景中的步骤定义和挂钩之间共享数据。
具体实现方式是特定于语言的。例如,在ruby中,
self步骤定义中的隐式变量指向当前场景的World对象。默认情况下,这是Object的实例,但是如果您使用World钩子,则可以是您想要的任何对象。在Java中,您有许多(可能已连接)World对象。
与Cucumber-Java中的World等效的是 所有带有hook或stepdef注释的对象 。换句话说,任何带有@ Before,@
After,@ Given等方法的类的实例对于每种情况都将被实例化一次。这实现了第一个目标。要实现第二个目标,您有两种方法:
a)对所有步骤定义和钩子使用单个类
b)使用按责任划分的几个类[1],并使用依赖注入[2]将它们彼此连接。
选项a)很快就崩溃了,因为您的步骤定义代码变得一团糟。这就是为什么人们倾向于使用b)。
[1] https://cucumber.io/docs/gherkin/step-
organization/[2] PicoContainer,Spring,Guice,Weld,OpenEJB,Needle
可用的依赖注入模块为:
Cucumber skin container
Fresh Cucumber Juice
Cucumber openejb
Cucumber spring
Cucumber welding
Cucumber needle
原始帖子在这里https://groups.google.com/forum/#!topic/cukes/8ugcVreXP0Y。
希望这可以帮助。



