C#?使用SpecFlow創(chuàng)建BDD測試用例的示例代碼
將自然語言編寫的測試用例轉(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  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性能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01C#實現(xiàn)Winform小數(shù)字鍵盤模擬器
本文主要介紹了C#實現(xiàn)Winform小數(shù)字鍵盤模擬器,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11C#使用RestSharp實現(xiàn)封裝常用的http請求方法
這篇文章主要為大家詳細介紹了C#如何使用RestSharp實現(xiàn)封裝常用的http請求方法,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2024-02-02