Specflow 场景大纲未按预期工作

Posted

技术标签:

【中文标题】Specflow 场景大纲未按预期工作【英文标题】:Specflow scenario outline not working as expected 【发布时间】:2018-08-02 07:52:57 【问题描述】:

Visual Studio 2017 C#

我发现运行场景大纲会多次运行测试,所以当我构建时,我可以在测试运行器中看到示例行中的所有测试。 当我执行其中一个测试时,当我运行单个测试而不是父组时,它似乎执行了每个示例和行。

这也发生在为它创建的 Jenkins 作业中,它检查代码构建和执行的新副本。这项工作花了 7 个小时,因为每条线都在运行每个测试,所以如果我有 10 条线,它会运行 100 次,因为每条线会运行 10 次,这意味着每个测试会执行 10 次。

这是如何发生的,您如何预防。

【问题讨论】:

【参考方案1】:

场景大纲是带有参数的场景。您可以在一个或多个示例表中指定它们。表格中的每一行都是一个示例,因此是一个场景。

它们就像 XUnit 中的理论。

这是 Gherkin 参考文档 (https://cucumber.io/docs/reference#scenario-outline) 中的一个示例:

Scenario Outline: feeding a suckler cow
  Given the cow weighs <weight> kg
  When we calculate the feeding requirements
  Then the energy should be <energy> MJ
  And the protein should be <protein> kg

  Examples:
    | weight | energy | protein |
    |    450 |  26500 |     215 |
    |    500 |  29500 |     245 |
    |    575 |  31500 |     255 |
    |    600 |  37000 |     305 |

【讨论】:

是的,这就是我的功能文件在构建项目时的样子,如果您愿意,每个示例行都​​会创建一个测试或场景。但是,当我执行这些场景中的“一个”时,测试似乎会在完成后运行其他场景。

以上是关于Specflow 场景大纲未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

Specflow - 场景大纲测试被忽略

Specflow - 场景大纲不会生成示例步骤

SpecFlow:场景大纲示例

Specflow:对场景和场景大纲使用相同的步骤定义

Specflow:为许多场景大纲维护一个示例表

Specflow 场景大纲 - 更改自动生成的测试名称