我可以做一个"超级"功能吗?多个功能使用相同的后台步骤,我可以使他们在不同的文件,而不是运行文件?
没有"超级功能文件"的概念,你可以在其他功能文件中提到背景步骤。在Ruby中,您可以从其他场景调用步骤,但在Java中不支持。
您可以通过使用带有标记的Before钩子来实现您的目标。在这个before hook方法中,您可以编写可重用的代码。请记住在所需的场景中添加相同的标签,并在黄瓜选项中使用标签运行测试。
这样做的一大缺点是步骤不再在任何特性文件中可见。您必须深入代码才能找到它,如果您有不熟悉或不访问您的代码的编写场景的人员,这尤其成问题。如果背景步骤是技术设置等,可以使用它
假设你有一个想要共享的背景,它看起来像
Background:
Given foo
And bar
And baz
...
他们分享这个的方式是把它变成一个命名问题。我们所需要做的就是给整个背景一个单一的名字。在这个愚蠢的例子中,我们使用'wibble'
现在我们可以直接写
Background:
Given wibble
并将其实现(理想情况下使用helper方法)为
Given 'wibble' do
foo
bar
baz
...
end
在这样做的过程中,你已经发现了一些对你的领域(wibble)很重要的东西。你也解决了你的问题,并创造了一些可以在更复杂的背景中使用的东西,例如
Background:
Given wibble
And wobble
没有"超级特性"的原因是不需要它:)