[Specflow]起手式

SpecFlow是一個BDD(Behavior-driven development)工具,由於網路對BDD有很多精闢介紹,

所以這系列文章不會有太多文字,都是個人一些學習使用心得。

SpecFlow網站有很完整範例和文件,基本上應該可以很快上手,

透過Feature描述情境並補助測試,讓開發、測試人員都可以溝通順暢並減少雙方認知上的差距,

下面我就手把手來完成我第一個SpecFlow(安裝Specflow就不介紹了)。

 

1.新增Feature檔案

Scenario:什麼場景下

Given:給予先決條件

And:其他條件

When:因為觸發動作

Then:所以產生結果

Note:BDD可以不需要Given/And,但When是必須的,由於還沒有step,所以文字都呈現紫色。

 

1.1設定specflow使用 MsTest

2.產生step

直接Generate。

執行Specflow scenario會發現略過測試原因都是都沒有實作。

3.實作測試

public class Calculator
    {
        public int FirstNum { get; set; }
        public int SecondNum { get; set; }
        public int Result { get; set; }
        public void Add()
        {
            this.Result = this.FirstNum + this.SecondNum-10;
        }
    }

 

step修改如下

[Binding]
    public class CalculatorSteps
    {
        Calculator calculator = new Calculator();//using VueLab;
        [Given(@"I have entered 50 into the calculator")]
        public void GivenIHaveEntered50IntoTheCalculator()
        {
            calculator.FirstNum = 50;
        }

        [Given(@"I have entered 70 into the calculator")]
        public void GivenIHaveEntered70IntoTheCalculator()
        {
            calculator.SecondNum = 70;
        }

        [When(@"I press add")]
        public void WhenIPressAdd()
        {
            calculator.Add();
        }
        
        [Then(@"the result should be 120 on the screen")]
        public void ThenTheResultShouldBeOnTheScreen()
        {
            Assert.AreEqual(120, calculator.Result);
        }
    }

再次執行測試

可以看到結果不符120(得到一個紅燈),這是因為Calculator.Add()我多-10,所以回頭修改正確Add邏輯。

修改後再次執行

得到一個綠燈。

 

參考

SpecFlow+ Getting Started