BDD - 如何处理横切特征的规范?

时间:2015-04-01 19:54:11

标签: bdd gherkin

在BDD中,您如何处理横切特征的规范?

考虑一个允许处理文档的应用程序。有一些功能,如编辑文本或向文档添加图像。现在还有一个额外的功能“Changelog”,它应该能够调查之前对文档所做的任何更改。

现在这就是我的困境:要么“改变日志”得到它自己的规范,而不是它的永无止境的功能。每当添加用于编辑文档的新功能时,我还需要在“更改日志”功能中添加一些内容。或者,在所有其他功能的规范中指定“更改日志”,始终勾画出在某个操作之后应在更改日志中显示哪种条目。在这种情况下,我需要在定义其他功能时预见更改日志功能,并且已经定义并可能实现的功能需要针对更改日志功能进行优化。

如何解决这个困境的任何实际建议?

1 个答案:

答案 0 :(得分:0)

我通过在任何相关的场景中添加额外的断言步骤来处理这样的事情。

Given some set up
When I use a feature
Then something happens
And it is reflected in the changelog as a 'something happened' entry

我这样做的原因,而不是单独的规范,听起来这两个动作是同一个功能的一部分。将它们分成不同的场景对我来说是没有意义的。任何因更改而中断的现有方案都将使用相同的步骤定义,因此在您通过此测试时将会更新。

这样做的缺点是,在更改日志功能时,您希望运行的相关测试是通过测试套件分发的。我会通过使用@changelog标记测试的相关子集并创建测试运行来仅运行这些测试来解决这个问题。