C# Specflow要素文件-可能有多行示例

C# Specflow要素文件-可能有多行示例,c#,specflow,feature-file,C#,Specflow,Feature File,我想知道在场景大纲中是否有可能为参数名添加一行新行 e、 g 场景大纲:登录 鉴于 当我输入CRM凭据并登录时 然后我将登录 示例: |我在新线上 |数据|数据|数据|数据| |办公室|门户|链接| |数据|数据|数据|数据| 我想不会,因为我不确定这两条线之间会有什么区别。我之所以需要它,是因为冗长的场景中有很多参数(例如25个参数)。多行参数示例无法使用Gherkin(编写场景的语言)。 示例部分中的每一行都是一个单独的场景/测试 如果有那么多参数,最佳做法是将场景大纲拆分为多个大纲,并使

我想知道在场景大纲中是否有可能为参数名添加一行新行 e、 g

场景大纲:登录
鉴于
当我输入CRM凭据并登录时
然后我将登录
示例:
|我在新线上
|数据|数据|数据|数据|
|办公室|门户|链接|
|数据|数据|数据|数据|

我想不会,因为我不确定这两条线之间会有什么区别。我之所以需要它,是因为冗长的场景中有很多参数(例如25个参数)。

多行参数示例无法使用Gherkin(编写场景的语言)。 示例部分中的每一行都是一个单独的场景/测试

如果有那么多参数,最佳做法是将场景大纲拆分为多个大纲,并使用默认值

这是不可能的

文档。规范中规定,示例部分应为具有单标题行的表格,以及具有以下数据的所有其他行:

该表必须具有与中的变量相对应的标题行 场景概述步骤

下面的每一行将创建一个新场景,填充 变量值

技术部分。Specflow使用语言解析器将特征文件解析为AST(抽象语法树)。该解析器逐个读取输入文件行,并为每行生成令牌。源代码:

扫描仪读取小黄瓜文档(通常从.feature文件读取) 并为每行创建一个标记。令牌被传递给 解析器,它输出一个AST(抽象语法树)

然后,解析器逐个读取令牌,并确定该令牌与哪种类型的行相关。当它找到examples行时,它会查找一个标题行(examples\u Definition),后跟examples。如果你愿意这样做

    |I      |am     | on   | the |
    |data   |data   |data  |data |
    |Office |Portal |link  |
    |data   |data   |data  |
然后,第三行将被视为单元格数不正确的示例行

实际上,解析器将如何理解您是否有简单的数据行或行标题?所有示例数据都表示为字符串。a和
Office
I
列的完全有效值。好的,在这个特定的示例中,底部的表定义部分有3列。但是如果也有四列呢

    |I      |am     | on   | the |
    |data   |data   |data  |data |
    |Office |Portal |link  | foo |
    |data   |data   |data  |data |
无法为解析器定义第二个标题行

可读性。坦率地说,这样的多行表对于人们来说是不可读的。很难将示例表底部和顶部的第三个场景大纲部分关联起来。但可读性是小黄瓜和Specflow的主要特点。如果需要为场景提供这么多参数,请考虑重新设计测试。

    |I      |am     | on   | the |
    |data   |data   |data  |data |
    |Office |Portal |link  | foo |
    |data   |data   |data  |data |