1

我有两个功能文件 feature1.feature 和 feature2.feature。在 feature1.feature 中,我正在创建一个字段值并将其添加到 FeatureContext.Current。是否有可能从 feature2.feature 访问该值?

我知道一旦特定功能运行结束,FeatureContext 类将被清除。是否有任何其他方法可以访问两个不同功能文件之间的值?

请提出一些想法。

提前致谢。

4

2 回答 2

2

我强烈建议反对这种设置。有几个原因:

  • 技术原因:SpecFlow 不保证它运行场景的任一功能的顺序。你不能相信它总是一样的。
  • 商业原因:您正在编写的场景首先是一种通信工具。您希望它们本身易于理解。当您谈论特定场景时,您无需通读该功能中的其他场景即可了解此特殊情况的作用。它阻塞了你在场景中的交流。

我建议您宁愿在每个场景中复制信息以提高可读性。如果您最终在每个场景中都有大量重复信息,您可以使用Gherkin 的背景功能。这些步骤在功能文件中的每个场景之前运行一次,可用于重复操作。

如果您发现自己需要在场景之间来回传递信息,您可能应该退后一步重新考虑您的场景。这两种情况真的不同吗?或者它可能只是一个?你怎么能更清楚地表达它们?

我希望这很有用。

于 2013-04-12T09:39:01.953 回答
0

我从未尝试过,但也许您可以使用 [BeforeFeature] 和 [AfterFeature] 属性从 featurecontext 中获取值并将其设置在下一个功能的上下文中。

于 2013-04-11T22:26:56.420 回答