使用LightBDD轻松实现行为驱动开发
前言
上次,我們介紹了行為驅動開發(BDD)
它的優點是可以使用純文本編寫測試用例,不需要編程經驗。
如果測試用例也全部是程序員寫的情況,這種方式反而存在障礙,feature使用與編寫代碼的語言完全不同的語言來編寫,維護測試需要在feature和step代碼間來回切換。
LightBDD
LightBDD是輕量級的行為驅動開發框架。
它提供了一種替代方案,你可以直接在C#代碼中編寫BDD風格的測試,以便開發人員可以使用IDE以簡單自然的方式維護測試。
我們以SpecFlow官方的計算器示例為例,演示使用LightBDD如何實現。
1. 創建Calculator項目
假設,我們需要實現加法功能。
創建一個類庫,編寫如下代碼:
public?class?Calculator {public?int?FirstNumber?{?get;?set;?}public?int?SecondNumber?{?get;?set;?}public?int?Add(){return?FirstNumber?+?SecondNumber;} }2. 創建XUnit測試項目
添加XUnit測試項目,引用nuget包LightBDD.XUnit2。
然后創建partial類,以便將feature和step代碼分開,這樣更好管理和閱讀:
[FeatureDescription("第一個feature")] public?partial?class?UnitTest1?:?FeatureFixture {//放置場景代碼 }public?partial?class?UnitTest1 {//放置步驟代碼 }3. 編寫場景代碼
現在編寫我們第一個場景,使用SpecFlow是這樣的:
我們用LightBDD可以這樣寫:
[Scenario] public?void?Adding_two_numbers_should_return_total() {Runner.RunScenario(_?=>?Given_the_first_number_is(50),_?=>?And_the_second_number_is(70),_?=>?When_the_two_numbers_are_added(),_?=>?Then_the_result_should_be(120)); }4. 編寫step代碼
可以看到,場景全部用C#代碼,因此從場景定義中自動生成方法變得非常容易。
填充后的step代碼如下:
public?partial?class?UnitTest1 {private?readonly?Calculator?_calculator?=?new?Calculator();private?int?_result;private?void?Given_the_first_number_is(int?number){_calculator.FirstNumber?=?number;}private?void?And_the_second_number_is(int?number){_calculator.SecondNumber?=?number;}private?void?When_the_two_numbers_are_added(){_result?=?_calculator.Add();}private?void?Then_the_result_should_be(int?number){Assert.Equal(number,?_result);} }5. 運行測試
最后,運行測試:
而且,如果你打開bin\Debug\net5.0\Reports文件夾,可以找到一個HTML報告,更加清晰地反映測試質量:
結論
我們都知道,好的測試可以帶來更好、錯誤更少的程序,實現更快的開發。
但是編寫出有效的測試不是一件容易的事!
LightBDD提供了一個方便的解決方案,使你的測試場景清晰,編寫起來更加輕松!
如果你覺得這篇文章對你有所啟發,請關注我的個人公眾號”My IO“,記住我!
總結
以上是生活随笔為你收集整理的使用LightBDD轻松实现行为驱动开发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 创建工程师文化的3个步骤 | IDCF
- 下一篇: Envoy实现.NET架构的网关(一)静