BDD - SpecFlow BDD 测试实践 SpecFlow + SpecRun

引言

上篇有介绍 BDD - SpecFlow BDD 测试实践 SpecFlow + Xunit,今天来实践一下 SpecFlow + SpecRun

SpecFlow+ Runner 说明

SpecFlow+ Runner 已经宣布不再推新和维护了 The Retirement of SpecFlow+ Runner ,所以在使用上会有点限制,.NET 5 及之前的版本,没有变化,Nuget package 还会保留,使用 SpecFlow+ Runner 没有任何限制,但是不再会有 Bug Fix 和 New Feature 发布。.NET 6,需要替换 unit test runner (用 NunitxUnitMSTest 来替换 SpecFlow+ Runner),具体参考 Migrating away from the SpecFlow+ Runner

创建一个 .NET Framework 项目

我们接着上一篇 BDD - SpecFlow BDD 测试实践 SpecFlow + Xunit 中的实例,在已有的 Solution 中添加一个新的项目。

在这里插入图片描述
右键 Solution -> Add -> New Project

在这里插入图片描述

选择 Class Library (.NET Framework)
在这里插入图片描述

注意 Framework 的选择,我本机是 .NET Framework 4.6.2,只要是 .NET 5 及之前的版本应该都没有问题。

在这里插入图片描述

新项目 SpecFlowSecRun 创建好了。

在这里插入图片描述

添加 SpecFlow package

右键 References -> Manage Nuget Packages

在这里插入图片描述

注意选择 SpecFlow 版本依赖的 .NE FrameWork 版本,最新版本依赖 .NET Framework 4.6.1,我的是 .NET Framework 4.6.2,是可以向前后容的。

在这里插入图片描述

SpecFlow 装好以后会多出 packages.config 文件用来管理 Nuget 包。相比 SpecFlow 2.4,没有自动生成 App.config 文件。

在这里插入图片描述

安装 SpecRun Package

一定要选择跟 SpecFlow 一致的版本,我们也选择最新版本

在这里插入图片描述

安装结束后会多出一些文件

在这里插入图片描述

创建 Feature 文件

该装的依赖包都装好了,我们尝试创建一个 Feature 文件试试。
右键项目-> Add -> New Item

在这里插入图片描述

选择 SpecFlow -> Feature File for SpecFlow

在这里插入图片描述

Feature 文件生成

在这里插入图片描述

用下面代码替换 feature 文件中的内容

Feature: Calculator

A short summary of the feature

@tag1
Scenario: Add two numbers
	Given the first number is 50
	And the second number is 70
	When the two numbers are added
	Then the result should be 120

在这里插入图片描述

现在编译一下这个项目,会产生一个 Calculator.feature.cs 文件,主要是将 SpecFlow Scenarios 转换成 SpecRun 可执行的 test cases。

在这里插入图片描述

在这里插入图片描述

SpecFlow 3 Vs SpecFlow 2

相比 SpecFlow 2.4.0 版本,这个 Calculator.feature.cs 文件是没有包含在 VS 项目文件中的,删除这个文件后,只要编译一下又会重新生成,所以不用在代码仓库中去维护这个文件,算是一个改进,而 SpecFlow 2.4.0 就必须将它和 对应的 feature 文件一起提交到代码库,其他人拉代码时就会出现编译问题。

在这里插入图片描述

自动生成 feature.cs 文件出错 TroubleShooting

SpecFlow 因为不会自动生成 App.config 项目配置文件,有时会遇到发生生成 feature.cs 文件出错,参考 SpecFlow Configuration 本文是 .NET Framework 项目,所以没有强制要求进行配置,通常是不会出现这种错误
在这里插入图片描述

方法一: 手动添加 specflow.json

手动添加一个SpecFlow 配置文件 specflow.json,并且将 specflow.json 文件属性 Copy to Output Directory 设置成 Copy alwaysCopy if newer

在这里插入图片描述
在这里插入图片描述

方法二:手动添加一个 App.config 文件

在这里插入图片描述

并添加如下内容:

  <configSections>
    <section name="specFlow" type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow" />
  </configSections>
  <specFlow>
    <!-- For additional details on SpecFlow configuration options see http://go.specflow.org/doc-config -->
  <!-- For additional details on SpecFlow configuration options see http://go.specflow.org/doc-config --><!-- use unit test provider SpecRun+NUnit or SpecRun+MsTest for being able to execute the tests with SpecRun and another provider --><unitTestProvider name="SpecRun" /><plugins>
      <add name="SpecRun" />
    </plugins></specFlow>

在这里插入图片描述

创建 step definition 文件

右键 feature 文件中的 step -> Define Steps…,创建 step definition

在这里插入图片描述

在这里插入图片描述

创建的 step definition 文件,模板文件中 step 都是没有实现的。

在这里插入图片描述

实现 steps

为了简单点,每个 step 只做一个输出

在这里插入图片描述

执行测试

编译整个 Solution, 并打开菜单 Test -> Test Explorer,发现到测试用例,点击绿色图标运行。

在这里插入图片描述

执行结果,还可以看到每个 step 的输出

在这里插入图片描述

测试报告

执行完,会自动生成测试报告,当前 solution 中生成 TestResults 文件夹,相比上篇 BDD - SpecFlow BDD 测试实践 SpecFlow + Xunit 要友好多了,SpecFlow + Xunit 不会自动生成测试报告。

在这里插入图片描述

在这里插入图片描述

生成的 html 报告

在这里插入图片描述

生成的 txt log:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值