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

在这里插入图片描述

创建 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;
        }
    }
}

在这里插入图片描述

实现 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);
        }
    }
}

在这里插入图片描述

执行测试

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BDD(行为驱动开发)测试是一种软件开发方法,旨在通过注重故事和行为来保证软件的正确性。SpecFlow是一种.NET环境下的BDD测试工具,它允许开发人员使用Gherkin语言编写和执行测试场景。 Gherkin语言是一种结构化的自然语言,用于描述软件的行为。它使用关键字如Given(假设)、When(当)和Then(那么)来表示测试场景的不同部分。SpecFlow有效地将Gherkin语言与编程语言(如C#)结合使用,这使得开发人员能够以更自然的方式编写测试用例,并将其与实际的代码逻辑连接起来。 使用SpecFlow进行BDD测试可以带来许多好处。首先,它可以使开发人员和业务部门之间的沟通更加清晰明了。通过使用Gherkin语言,开发人员可以更直观地理解业务需求,并将其转化为可执行的测试场景。这样一来,在开发过程中,开发人员可以更准确地了解要编写的代码逻辑,从而降低开发过程中的误解和错误。 其次,SpecFlow可以促进测试自动化。通过将Gherkin语言与实际的代码测试逻辑相结合,开发人员可以将测试用例与代码进行绑定,并自动运行它们以验证软件是否按照预期工作。这样一来,开发人员可以更快地发现和修复潜在的问题,从而提高软件质量和交付速度。 最后,SpecFlow还提供了广泛的集成和插件支持。开发人员可以与其他工具(如技术栈中的单元测试框架、持续集成工具等)进行整合,以实现更全面的自动化测试流程。此外,SpecFlow还允许开发人员通过定义自己的步骤来扩展其功能,以满足特定的测试需求。 总之,使用SpecFlow进行BDD测试可以帮助开发人员更好地理解需求、提高测试效率和软件质量,并提供给开发人员更多的工具来管理和执行测试用例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值