您能否在 SpecFlow 中的方案大纲中标记单个示例?



场景大纲对于创建数据驱动测试非常方便,但场景的数量随着示例数量的增加而增加。我已经养成了标记场景的习惯,以便更轻松地筛选应用程序的主要功能。

我想设置一个"烟雾测试",以达到所有主要用例。其中一些用例是在对日期或数字执行边界测试的场景大纲中捕获的,但我只想在示例中介绍一个原型案例。

例如,假设我们有一个功能,允许我们为工作添加职位空缺(基本上是"招聘机会"而不是"我们有温暖的身体填补这个职位"(。

在屏幕上,我们有两个表单字段用于最低体验:年和月。用户不应在月份字段中输入超过 11 个月,否则他们应该在年份字段中输入一些内容(例如,18 个月实际上应该是 1 年零 6 个月(。

@job-openings
Scenario Outline: Adding a job opening with experience
Given a job exists
When I add a job opening requiring <years> years and <months> months experience
Then a job opening should exist requiring <years> years and <months> months experience
Examples:
| years | months |
| 0     | 1      |
| 0     | 11     |
| 1     | 0      |
| 2     | 6      | # <-- the "prototypical" example I want to tag
| 99    | 0      |
| 99    | 11     |
| 100   | 0      |

从回归测试的角度来看,让这些示例在数年和数月内达到可接受值的边界肯定是有用的,但在对系统执行"冒烟测试"时则不然。最好在场景大纲中运行一个代表典型用例的示例。作为一些背景信息,我们有一个PowerShell脚本,开发人员使用它来运行各种自动化测试,并且达到所有主要功能的常规"冒烟测试"将很有用。

有没有办法在方案大纲中标记单个示例?

这是我这样做的方式:

@job-openings
Scenario Outline: Adding a job opening with experience
Given a job exists
When I add a job opening requiring <years> years and <months> months experience
Then a job opening should exist requiring <years> years and <months> months experience
@smoketest @regression
Examples:
| years | months |
| 2     | 6      | # <-- the "prototypical" example I want to tag
@regression
Examples:
| years | months |
| 0     | 1      |
| 0     | 11     |
| 1     | 0      |
| 99    | 0      |
| 99    | 11     |
| 100   | 0      |

有两个示例部分都属于该方案。烟雾测试有自己的示例部分。运行时

dotnet test --filter "TestCategory=job-opening&TestCategory=smoketest"

它只会运行带有 smoketest 标记的示例。运行时

dotnet test --filter "TestCategory=job-opening&TestCategory=regression"

它将运行所有示例。它还将运行烟雾测试,因为它也有回归标签。

User1207289的方法也有效。我有时会在测试中断时这样做,我想稍后重新测试它。生成测试后,您要运行的特定示例将获得一个名称(例如AddingAJob_ExampleYears2Months6(。可以在带有-t标志的场景中找到生成的单元测试的名称,该标志列出了所有测试:

dotnet test --filter "TestCategory=job-opening" -t

要运行一个特定测试(从技术上讲,名称中带有AddingAJob_ExampleYears2Months6 的所有测试(:

dotnet test --filter AddingAJob_ExampleYears2Months6

我在上面的示例中使用了官方的 dotnet cli 工具,但对于其他测试运行程序来说,它非常相似。

我能够通过以下命令从场景大纲运行单个示例

C:Users....binDebug>"C:Program Files (x86)Microsoft Visual Studio2019ProfessionalCommon7IDEExtensionsTestPlatformvstest.console.exe" yourTests.exe /Tests:yourTestName

其中yourTestName是生成时在测试资源管理器中生成的测试的名称,yourTests.exe/bin/debug中生成的 exe。 我正在使用 MSTest

有关生成名称的更多信息,请查看此处

最新更新