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

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

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

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

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

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

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

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

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

        public Decimal Weight { get; set; }

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

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

項(xiàng)目名稱為TestBmi,選擇xUnit作為Test Framework:

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

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

到這里,準(zhǔn)備工作完成,現(xiàn)在可以開始寫測試用例了。在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è)測試的是兩個(gè)數(shù)字相加,我們照貓畫虎,編寫我們自己的測試用例,我們添加一個(gè)新的SpecFlow feature:

編寫代碼如下:

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è)新的測試文件被創(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è)類中,編寫測試,首先創(chuàng)建BmiCalculator的實(shí)例:

private readonly BmiCalculator _bmical = new BmiCalculator();

然后,改寫各個(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); 
        }
    }
}

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

與想象的一樣,測試沒有通過,因?yàn)槲覀儧]有編寫實(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)行測試:

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

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

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

    TextBox獲取輸入焦點(diǎn)時(shí)自動(dòng)全選的實(shí)現(xiàn)方法

    TextBox獲取輸入焦點(diǎn)時(shí)自動(dòng)全選的實(shí)現(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#切換窗口

    最近項(xiàng)目不多忙,于是抽點(diǎn)時(shí)間鞏固下切換窗口問題,感興趣的朋友跟著小編一起學(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

最新評論

松桃| 孟州市| 浦城县| 岳普湖县| 伊宁市| 邵武市| 祁阳县| 陆丰市| 安多县| 民和| 策勒县| 宁晋县| 松桃| 泸水县| 塔城市| 会同县| 兴化市| 侯马市| 灵台县| 同德县| 青海省| 河东区| 刚察县| 桂东县| 视频| 德昌县| 阜宁县| 元谋县| 耒阳市| 宁武县| 沁阳市| 海淀区| 保康县| 和硕县| 英德市| 迁安市| 邻水| 东光县| 余干县| 清原| 汶上县|