最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

再次啟動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)是這樣的:

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

到這里,準(zhǔn)備工作完成,現(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)文章

  • C#?wpf使用GDI+實現(xiàn)截屏效果

    C#?wpf使用GDI+實現(xiàn)截屏效果

    wpf做屏幕錄制或者屏幕廣播之類的功能時需要實現(xiàn)截屏,在C#中比較容易實現(xiàn)的截屏方法是使用GDI+,所以本文將展示一下如何使用GDI+實現(xiàn)截屏,需要的可以參考下
    2023-09-09
  • C#實現(xiàn)解析JSON的示例詳解

    C#實現(xiàn)解析JSON的示例詳解

    這篇文章主要為大家詳細(xì)介紹了使用C#實現(xiàn)解析JSON的相關(guān)知識,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • WinForm調(diào)用百度地圖接口用法示例

    WinForm調(diào)用百度地圖接口用法示例

    這篇文章主要介紹了WinForm調(diào)用百度地圖接口用法,結(jié)合具體實例形式簡單分析了WinForm WebBrower控件與前端百度接口交互的相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • C#關(guān)于反射加載的問題

    C#關(guān)于反射加載的問題

    C#關(guān)于反射加載的問題,需要的朋友可以參考下。
    2011-07-07
  • TextBox獲取輸入焦點時自動全選的實現(xiàn)方法

    TextBox獲取輸入焦點時自動全選的實現(xiàn)方法

    TextBox獲取輸入焦點時自動全選的實現(xiàn)方法,需要的朋友可以參考一下
    2013-03-03
  • C# AutoMapper 使用方法總結(jié)

    C# AutoMapper 使用方法總結(jié)

    這篇文章主要介紹了C# AutoMapper 使用方法,文中講解非常細(xì)致,代碼幫助大家更好的理解學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • VS2013創(chuàng)建Windows服務(wù)與調(diào)試服務(wù)的圖文方法

    VS2013創(chuàng)建Windows服務(wù)與調(diào)試服務(wù)的圖文方法

    這篇文章主要介紹了VS2013創(chuàng)建Windows服務(wù)與調(diào)試服務(wù)的圖文方法,需要的朋友可以參考下
    2017-02-02
  • C#和lua相互調(diào)用的方法教程

    C#和lua相互調(diào)用的方法教程

    lua是一種腳本語言,可以方便的移植到各種宿主語言中,并且可以支持熱更新,在游戲開發(fā)中也能當(dāng)做主要的語言來編寫游戲的邏輯,所以這篇文章主要給大家介紹了關(guān)于C#和lua相互調(diào)用的方法教程,需要的朋友可以參考下。
    2017-11-11
  • 詳解C#切換窗口

    詳解C#切換窗口

    最近項目不多忙,于是抽點時間鞏固下切換窗口問題,感興趣的朋友跟著小編一起學(xué)習(xí)吧
    2016-04-04
  • C#筆記之EF Code First 數(shù)據(jù)模型 數(shù)據(jù)遷移

    C#筆記之EF Code First 數(shù)據(jù)模型 數(shù)據(jù)遷移

    EF 中 Code First 的數(shù)據(jù)遷移網(wǎng)上有很多資料,我這份并沒什么特別。Code First 創(chuàng)建視圖網(wǎng)上也有很多資料,但好像很麻煩,而且親測好像是無效的方法(可能是我太笨,沒搞成功),我摸索出了一種簡單有效的方法,這里分享給大家
    2021-09-09

最新評論

黔东| 阳新县| 黄石市| 石首市| 岑巩县| 潞西市| 收藏| 桦南县| 郑州市| 常德市| 颍上县| 庐江县| 封丘县| 惠水县| 广水市| 新邵县| 常州市| 曲阳县| 大名县| 梓潼县| 弥渡县| 霍邱县| 新绛县| 三穗县| 德惠市| 西宁市| 会东县| 大城县| 沈丘县| 德州市| 忻州市| 兴安县| 浮梁县| 峡江县| 苍溪县| 门源| 昆山市| 遵义县| 疏附县| 鸡东县| 福清市|