• BDD - SpecFlow BDD 测试实践 SpecFlow + Xunit


    引言

    BDD - SpecFlow BDD 测试实践 SpecFlow 模板 一文中主要是实践 SpecFlow 项目模板,今天主要实践非模板 BDD 测试 SpecFlow + Xunit,当然前提需要提前安装 SpecFlow’s Visual Studio 插件

    创建一个 .NET Framework 项目

    在这里插入图片描述
    注意 Framework 的选择,.NET Framework 4.6.2 是 support 比较好的版本。
    在这里插入图片描述

    添加 SpecFlow package

    右键 References -> Manage Nuget Packages
    在这里插入图片描述

    注意选择 SpecFlow 版本依赖的 .NE FrameWork 版本,Spec 2.4.0 依赖不多,我们就安装这个版本吧。
    在这里插入图片描述

    安装完成后,会多出两个文件 App.config 用来配置项目,packages.config 用来管理 Nuget 包。
    在这里插入图片描述

    添加支持 xUnit NuGet 包

    根据 xUnit 的依赖包
    在这里插入图片描述
    安装 xUnit,选择最新版本,因为没有依赖特定的 .NET Framework
    在这里插入图片描述

    安装 SpecFlow.xUnit,主要选择跟 SpecFlow 版本一致
    在这里插入图片描述

    xunit.runner.visualstudio 最新版本 2.4.5 正好对 .NET Framework 4.6.2 支持,所以选择这个最新版本安装。
    在这里插入图片描述

    Microsoft.NET.Test.Sdk,选择最新版本即可。
    在这里插入图片描述

    App.config 和 packages.config 的变化

    自动地加到 App.config 文件中
    在这里插入图片描述

    添加的 packages 都在 packages.config 文件中。
    在这里插入图片描述

    创建 Spec feature 文件

    右键项目-> add new item,选择 SpecFlow Feature 类型
    在这里插入图片描述

    我们还是用 Caculator 的实例吧,用下面内容覆盖 Caculator.feature 文件的内容

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    创建 step definition 文件

    右键 feature 文件中的 step -> Define Steps…,创建 step definition
    在这里插入图片描述
    在这里插入图片描述
    创建的 step definition 文件,模板文件中 step 都是没有实现的。
    在这里插入图片描述

    创建一个被测类文件

    创建一个 被测的 class 文件,Caculator.cs, 并用下面代码覆盖文件内容:

    namespace SpecFlowXunitDemo.UnderTest
    {
        public class Calculator
        {
            public int FirstNumber { get; set; }
            public int SecondNumber { get; set; }
    
            public int Add()
            {
                return FirstNumber + SecondNumber;
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    实现 steps

    首先安装 FluentAssertions 依赖,用于测试断言
    在这里插入图片描述
    用下面代码覆盖 step definition 文件的内容:

    using FluentAssertions;
    using SpecFlowXunitDemo.UnderTest;
    using TechTalk.SpecFlow;
    
    namespace SpecFlowXunitDemo
    {
        [Binding]
        public class CalculatorStepDefinitions
        {
            private readonly Calculator _calculator = new Calculator();
            private int _result;
    
            [Given("the first number is (.*)")]
            public void GivenTheFirstNumberIs(int number)
            {
                _calculator.FirstNumber = number;
            }
    
            [Given("the second number is (.*)")]
            public void GivenTheSecondNumberIs(int number)
            {
                _calculator.SecondNumber = number;
            }
    
            [When("the two numbers are added")]
            public void WhenTheTwoNumbersAreAdded()
            {
                _result = _calculator.Add();
            }
    
            [Then("the result should be (.*)")]
            public void ThenTheResultShouldBe(int result)
            {
                _result.Should().Be(result);
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    在这里插入图片描述

    执行测试

    编译整个 Solution, 并打开菜单 Test -> Test Explorer,发现到测试用例,点击绿色图标运行。
    在这里插入图片描述
    执行结果
    在这里插入图片描述

  • 相关阅读:
    Java中AQS的原理与实现
    nginx配置
    Leetcode算法入门与数组丨3. 数组基础
    海康G5系列(armv7l) heop模式下交叉编译Qt qmqtt demo,出现moc缺少高版本GLibc问题之解决
    Flink SQL --命令行的使用(02)
    前端-防止多次点击
    在 CentOS 8 中删除旧的 Linux 系统内核
    c++——AVL树
    【云原生之kubernetes实战】在k8s集群下部署portainer-k8s平台
    交换部分 VLAN
  • 原文地址:https://blog.csdn.net/wumingxiaoyao/article/details/126817984