前面有介绍下列实践系列:
BDD - SpecFlow BDD 测试实践 SpecFlow + SpecRun
BDD - SpecFlow BDD 测试实践 SpecFlow + Xunit
BDD - SpecFlow BDD 测试实践 SpecFlow 模板
今天来实践一下 SpecFlow + MSTest。
我们接着上一篇 BDD - SpecFlow BDD 测试实践 SpecFlow + SpecRun 中的实例,在已有的 Solution 中添加一个新的项目。
右键 Solution -> Add -> New Project
选择 Class Library (.NET Framework) 模板
注意
Framework 的选择,我本机是 .NET Framework 4.6.2,只要是 .NET 5 及之前的版本应该都没有问题。
新项目 SpecFlowMSTest 创建好了。
右键 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 文件。
根据官网 MSTest 安装所需要的的 NuGet 依赖包。
安装 SpecFlow.MSTest
一定要选择跟 SpecFlow 一致的版本
,我们也选择最新版本
安装 MSTest.TestFramework
前面安装 SpecFlow.MSTest,默认安装了 MSTest.TestFramework 2.1.2 版本,因为最新版本也没有啥依赖的,我们可以 Update 到最新版本。
安装 MSTest.TestAdapter
选择最新版本即可
安装 Microsoft.NET.Test.Sdk
同样最新版本即可
添加的 packages 都在 packages.config 文件中。
该装的依赖包都装好了,我们尝试创建一个 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 转换成 MSTest 可执行的 test cases。
右键 feature 文件中的 step -> Define Steps…,创建 step definition
创建的 step definition 文件,模板文件中 step 都是没有实现的。
为了简单点,每个 step 只做一个输出
编译整个 Solution, 并打开菜单 Test -> Test Explorer,发现到测试用例,点击绿色图标运行。
执行结果,还可以看到每个 step 的输出
尽管 Solution 下面会生成 TestResulsts 文件夹,但是是个空文件夹,有关测试报告以后有时间专门介绍一下。