集中特征文件中的 specflow 数据?

Centralising specflow data from feature files?

Specflow数据可以通过使用表格在特征文件中用场景来表示。

如果你有很多场景,我想很难定位和更改数据。

是否有一种模式可以帮助用每个场景的数据填充特征文件? 即如何使用存储库来集中多个功能的数据?

看你是如何写这个问题的,你似乎是 Specflow 的新手。

问题在于 Specflow 不是一种编程语言。事实上,当您第一次开始查看它时,它的几个语言组件可能会妨碍您。

如果您正确地遵循 BDD 方法,那么编写功能文件的不是程序员。应该是商务人士,这就是语言如此开放的原因。只需几个占位符来提供功能和场景名称,然后在每行的开头使用一个简单的词来指示它是设置操作 (Given) 和操作 (When) 还是测试 (Then)。

例如,作为开发人员,我可能会想出以下示例。

Feature: Waking kids up for school
Scenario Outline: When its a school day
  Given it is a <day>
  When it is <time> for <child> to get up
  Then <Mum> should wake me up

Examples:
  |child   |day|time |parent|
  |daughter|mon|06:30|mum   |
  |son     |mon|06:30|mum   |
  |daughter|tue|06:30|mum   |
  |son     |tue|06:30|mum   |
  |daughter|wed|07:00|dad   |
  |son     |wed|07:15|dad   |
  |daughter|thu|07:00|dad   |
  |son     |thu|07:15|dad   |
  |daughter|fri|07:30|dad   |
  |son     |fri|07:35|dad   |

这个例子将我们(虚构的)家庭日常事务的所有复杂性都包含在不同的 parents 中,有利于一周中的不同时间和日期等等。

但另一方面我也可以写

Feature: Waking kids up for school
Scenario: When its a school day
  Given it is a school day
  When it is time to get up
  Then my parent should wake me up

这可以捕获所有必要的内容,因为复杂性不需要反映在场景中(说真的,谁在乎我的孩子什么时候醒来,只要他们上学!)。

但是如果你需要复杂性,你可以在你的测试代码中定义它

[Binding]
public void GivenItIsASchoolDay()
{
  ScenarioContext.Current["Day"]="Wed";
  ScenarioContext.Current["Time"]="07:00";
  ScenarioContext.Current["Parent"]="Mum";
}

不要忘记 Binding 是全局的,因此如果您构建代码使它们都在同一个地方,那么您最终会集中所有内容。