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

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

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

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

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

點擊下載,下載完成后,需要退出Visual Studio 2022,插件會自動安裝。

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

再次啟動Visual Studio,創(chuàng)建一個類庫項目,名稱為CalBmi,編寫代碼如下:

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

        public Decimal Weight { get; set; }

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

接下來,在解決方案中添加SpecFlow項目,選擇項目類型為SpecFlow:

項目名稱為TestBmi,選擇xUnit作為Test Framework:

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

然后,添加項目引用,將測試目標項目CalBmi添加到TestBmi的項目引用中:

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

代碼是這樣的:

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

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

編寫代碼如下:

Feature: 計算BMI

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

點擊右鍵,選擇DefineSteps:

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

代碼如下:

using System;
using TechTalk.SpecFlow;

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

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

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

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

在這個類中,編寫測試,首先創(chuàng)建BmiCalculator的實例:

private readonly BmiCalculator _bmical = new BmiCalculator();

然后,改寫各個方法:

using CalBmi;
using System;
using TechTalk.SpecFlow;

namespace TestBmi.StepDefinitions
{
    [Binding]
    public class 計算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(@"計算BMI")]
        public void When計算BMI()
        {
            _result=_bmical.Bmi();
        }

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

在測試管理器中運行這個測試:

與想象的一樣,測試沒有通過,因為我們沒有編寫實現(xiàn)代碼,現(xiàn)在,修改BmiCalculator ,增加計算方法:

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

        public Decimal Weight { get; set; }

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

再次運行測試:

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

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

再次運行測試,這次通過了:

在測試中給出了測試步驟和每個步驟花費的時間。

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

    解析在C#中接口和類的異同

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

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

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

    C# 獲取屬性名的方法

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

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

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

    C#多線程的ResetAbort()方法

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

最新評論