使用LightBDD轻松实现行为驱动开发
前言
上次,我們介紹了行為驅(qū)動(dòng)開發(fā)(BDD)
它的優(yōu)點(diǎn)是可以使用純文本編寫測(cè)試用例,不需要編程經(jīng)驗(yàn)。
如果測(cè)試用例也全部是程序員寫的情況,這種方式反而存在障礙,feature使用與編寫代碼的語言完全不同的語言來編寫,維護(hù)測(cè)試需要在feature和step代碼間來回切換。
LightBDD
LightBDD是輕量級(jí)的行為驅(qū)動(dòng)開發(fā)框架。
它提供了一種替代方案,你可以直接在C#代碼中編寫B(tài)DD風(fēng)格的測(cè)試,以便開發(fā)人員可以使用IDE以簡單自然的方式維護(hù)測(cè)試。
我們以SpecFlow官方的計(jì)算器示例為例,演示使用LightBDD如何實(shí)現(xiàn)。
1. 創(chuàng)建Calculator項(xiàng)目
假設(shè),我們需要實(shí)現(xiàn)加法功能。
創(chuàng)建一個(gè)類庫,編寫如下代碼:
public?class?Calculator {public?int?FirstNumber?{?get;?set;?}public?int?SecondNumber?{?get;?set;?}public?int?Add(){return?FirstNumber?+?SecondNumber;} }2. 創(chuàng)建XUnit測(cè)試項(xiàng)目
添加XUnit測(cè)試項(xiàng)目,引用nuget包LightBDD.XUnit2。
然后創(chuàng)建partial類,以便將feature和step代碼分開,這樣更好管理和閱讀:
[FeatureDescription("第一個(gè)feature")] public?partial?class?UnitTest1?:?FeatureFixture {//放置場景代碼 }public?partial?class?UnitTest1 {//放置步驟代碼 }3. 編寫場景代碼
現(xiàn)在編寫我們第一個(gè)場景,使用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#代碼,因此從場景定義中自動(dòng)生成方法變得非常容易。
填充后的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. 運(yùn)行測(cè)試
最后,運(yùn)行測(cè)試:
而且,如果你打開bin\Debug\net5.0\Reports文件夾,可以找到一個(gè)HTML報(bào)告,更加清晰地反映測(cè)試質(zhì)量:
結(jié)論
我們都知道,好的測(cè)試可以帶來更好、錯(cuò)誤更少的程序,實(shí)現(xiàn)更快的開發(fā)。
但是編寫出有效的測(cè)試不是一件容易的事!
LightBDD提供了一個(gè)方便的解決方案,使你的測(cè)試場景清晰,編寫起來更加輕松!
如果你覺得這篇文章對(duì)你有所啟發(fā),請(qǐng)關(guān)注我的個(gè)人公眾號(hào)”My IO“,記住我!
總結(jié)
以上是生活随笔為你收集整理的使用LightBDD轻松实现行为驱动开发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 创建工程师文化的3个步骤 | IDCF
- 下一篇: SkyWalking配上告警更优秀