亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#?使用SpecFlow創(chuàng)建BDD測(cè)試用例的示例代碼

 更新時(shí)間:2022年06月16日 14:33:28   作者:尋找無(wú)名的特質(zhì)  
這篇文章主要介紹了C#?使用SpecFlow創(chuàng)建BDD測(cè)試用例,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

將自然語(yǔ)言編寫(xiě)的測(cè)試用例轉(zhuǎn)換為可執(zhí)行的測(cè)試,可以大大降低需求與開(kāi)發(fā)之間的溝通成本,這是BDD(行為驅(qū)動(dòng)開(kāi)發(fā))希望達(dá)到的效果。SpecFlow是.Net平臺(tái)的BDD工具,可以幫助我們創(chuàng)建面向BDD的測(cè)試用例。

首先,在Visual Studio 2022中安裝SpecFlow插件。選擇菜單擴(kuò)展->管理擴(kuò)展,然后搜索SpecFlow:

點(diǎn)擊下載,下載完成后,需要退出Visual Studio 2022,插件會(huì)自動(dòng)安裝。

我們編寫(xiě)一個(gè)簡(jiǎn)單的計(jì)算BMI(Body Mass Index身體質(zhì)量指數(shù))的功能作為測(cè)試目標(biāo),算法很簡(jiǎn)單,輸入是身高和體重,計(jì)算公式是體重除以身高的平方。

再次啟動(dòng)Visual Studio,創(chuàng)建一個(gè)類(lèi)庫(kù)項(xiàng)目,名稱為CalBmi,編寫(xiě)代碼如下:

namespace CalBmi
{
    public class BmiCalculator
    {
        public Decimal Height { get; set; }

        public Decimal Weight { get; set; }

        public Decimal Bmi()
        {
            throw new NotImplementedException();
        }
    }
}

接下來(lái),在解決方案中添加SpecFlow項(xiàng)目,選擇項(xiàng)目類(lèi)型為SpecFlow:

項(xiàng)目名稱為T(mén)estBmi,選擇xUnit作為T(mén)est Framework:

創(chuàng)建完成后,項(xiàng)目的結(jié)構(gòu)是這樣的:

然后,添加項(xiàng)目引用,將測(cè)試目標(biāo)項(xiàng)目CalBmi添加到TestBmi的項(xiàng)目引用中:

到這里,準(zhǔn)備工作完成,現(xiàn)在可以開(kāi)始寫(xiě)測(cè)試用例了。在TestBmi中有一個(gè)示例模板,

代碼是這樣的:

Feature: Calculator
![Calculator](https://specflow.org/wp-content/uploads/2020/09/calculator.png)
Simple calculator for adding **two** numbers

Link to a feature: [Calculator](TestBmi/Features/Calculator.feature)
***Further read***: **[Learn more about how to generate Living Documentation](https://docs.specflow.org/projects/specflow-livingdoc/en/latest/LivingDocGenerator/Generating-Documentation.html)**

@mytag
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

這個(gè)測(cè)試的是兩個(gè)數(shù)字相加,我們照貓畫(huà)虎,編寫(xiě)我們自己的測(cè)試用例,我們添加一個(gè)新的SpecFlow feature:

編寫(xiě)代碼如下:

Feature: 計(jì)算BMI

@mytag
Scenario: 根據(jù)身高體重計(jì)算BMI
	Given 身高1.75米
	And 體重70.00公斤
	When 計(jì)算BMI
	Then 結(jié)果應(yīng)該是22.86

點(diǎn)擊右鍵,選擇DefineSteps:

一個(gè)新的測(cè)試文件被創(chuàng)建了:

代碼如下:

using System;
using TechTalk.SpecFlow;

namespace TestBmi.StepDefinitions
{
    [Binding]
    public class 計(jì)算BMIStepDefinitions
    {
        [Given(@"身高(.*)米")]
        public void Given身高米(Decimal p0)
        {
            throw new PendingStepException();
        }

        [Given(@"體重(.*)公斤")]
        public void Given體重公斤(Decimal p0)
        {
            throw new PendingStepException();
        }

        [When(@"計(jì)算BMI")]
        public void When計(jì)算BMI()
        {
            throw new PendingStepException();
        }

        [Then(@"結(jié)果應(yīng)該是(.*)")]
        public void Then結(jié)果應(yīng)該是(Decimal p0)
        {
            throw new PendingStepException();
        }
    }
}

在這個(gè)類(lèi)中,編寫(xiě)測(cè)試,首先創(chuàng)建BmiCalculator的實(shí)例:

private readonly BmiCalculator _bmical = new BmiCalculator();

然后,改寫(xiě)各個(gè)方法:

using CalBmi;
using System;
using TechTalk.SpecFlow;

namespace TestBmi.StepDefinitions
{
    [Binding]
    public class 計(jì)算BMIStepDefinitions
    {
        private readonly BmiCalculator _bmical = new BmiCalculator();
        private decimal _result;

        [Given(@"身高(.*)米")]
        public void Given身高米(Decimal p0)
        {
            _bmical.Height = p0;
        }

        [Given(@"體重(.*)公斤")]
        public void Given體重公斤(Decimal p0)
        {
            _bmical.Weight=p0;
        }

        [When(@"計(jì)算BMI")]
        public void When計(jì)算BMI()
        {
            _result=_bmical.Bmi();
        }

        [Then(@"結(jié)果應(yīng)該是(.*)")]
        public void Then結(jié)果應(yīng)該是(Decimal result)
        {
            _result.Should().Be(result); 
        }
    }
}

在測(cè)試管理器中運(yùn)行這個(gè)測(cè)試:

與想象的一樣,測(cè)試沒(méi)有通過(guò),因?yàn)槲覀儧](méi)有編寫(xiě)實(shí)現(xiàn)代碼,現(xiàn)在,修改BmiCalculator ,增加計(jì)算方法:

namespace CalBmi
{
    public class BmiCalculator
    {
        public Decimal Height { get; set; }

        public Decimal Weight { get; set; }

        public Decimal Bmi()
        {
            return Weight/Height/Height;
        }
    }
}

再次運(yùn)行測(cè)試:

仍然沒(méi)有通過(guò),問(wèn)題是需要保留兩位小數(shù),最后一位四舍五入,修改算法:

        public Decimal Bmi()
        {
            return System.Decimal.Round(Weight /Height/Height,2);
        }

再次運(yùn)行測(cè)試,這次通過(guò)了:

在測(cè)試中給出了測(cè)試步驟和每個(gè)步驟花費(fèi)的時(shí)間。

到此這篇關(guān)于C# 使用SpecFlow創(chuàng)建BDD測(cè)試用例的文章就介紹到這了,更多相關(guān)C# SpecFlow BDD測(cè)試用例內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解WPF如何使用WriteableBitmap提升Image性能

    詳解WPF如何使用WriteableBitmap提升Image性能

    這篇文章主要為大家詳細(xì)介紹了WPF如何使用WriteableBitmap提升Image性能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • C#實(shí)現(xiàn)Winform小數(shù)字鍵盤(pán)模擬器

    C#實(shí)現(xiàn)Winform小數(shù)字鍵盤(pán)模擬器

    本文主要介紹了C#實(shí)現(xiàn)Winform小數(shù)字鍵盤(pán)模擬器,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C#使用RestSharp實(shí)現(xiàn)封裝常用的http請(qǐng)求方法

    C#使用RestSharp實(shí)現(xiàn)封裝常用的http請(qǐng)求方法

    這篇文章主要為大家詳細(xì)介紹了C#如何使用RestSharp實(shí)現(xiàn)封裝常用的http請(qǐng)求方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2024-02-02
  • C#多線程系列之a(chǎn)sync和await用法詳解

    C#多線程系列之a(chǎn)sync和await用法詳解

    本文詳細(xì)講解了C#多線程中async和await的用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • c#項(xiàng)目實(shí)現(xiàn)發(fā)布到服務(wù)器全過(guò)程

    c#項(xiàng)目實(shí)現(xiàn)發(fā)布到服務(wù)器全過(guò)程

    這篇文章主要介紹了c#項(xiàng)目實(shí)現(xiàn)發(fā)布到服務(wù)器全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 解析在C#中接口和類(lèi)的異同

    解析在C#中接口和類(lèi)的異同

    今天小編就為大家分享一篇關(guān)于解析在C#中接口和類(lèi)的異同,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • C# 實(shí)現(xiàn)FTP上傳資料的示例

    C# 實(shí)現(xiàn)FTP上傳資料的示例

    這篇文章主要介紹了C# 實(shí)現(xiàn)FTP上傳資料的示例,幫助大家更好的理解和學(xué)習(xí)c#,感興趣的朋友可以了解下
    2020-12-12
  • C# 獲取屬性名的方法

    C# 獲取屬性名的方法

    C# 獲取屬性名的方法實(shí)例,需要的朋友可以參考一下
    2013-03-03
  • C#使用Socket上傳并保存圖片的方法

    C#使用Socket上傳并保存圖片的方法

    這篇文章主要介紹了C#使用Socket上傳并保存圖片的方法,涉及C#使用Socket進(jìn)行文件傳輸?shù)南嚓P(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • C#多線程的ResetAbort()方法

    C#多線程的ResetAbort()方法

    這篇文章介紹了C#多線程的ResetAbort()方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04

最新評(píng)論