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邏輯。
修改後再次執行
得到一個綠燈。
參考