[C#.NET][SpecFlow] 使用 Scenario Outline 執行多次驗証
續上篇,http://www.dotblogs.com.tw/yc421206/archive/2014/12/25/147796.aspx
Table 是用來處理集合
Scenario Outline 是多次調用被測端,這有點像 MSTest 裡的驅動測試
如何使用 Scenario Outline
- 宣告 Scenario Outline:
- 使用 Example 定義輸入資料以及期望資料
- 若要使用 Example 欄位,欄位名稱要加<xxx>,例如:<UserId>
範例如下:
Scenario Outline: authentication
Given 我輸入 <UserId>,<Password>
When 我按下Login
Then 結果應為 <Result>
Examples:
| UserId | Password | Result |
| kobe | 12234 | false |
| yao | 1234 | true |
| jordan | 5566 | false |
當 Scenario 宣告成 Outline,測試總管那邊會把一個 Scenario 拆成 Examples 所定義的筆數
若要針對整個 Scenario Debug,可以按右鍵 Debug SpecFlow Scenario,或是 Ctrl+R,Ctrl+A
SpecFlow 的程式碼,就沒什麼特別的地方了
[Given(@"我輸入 (.*),(.*)")]
public void Given我輸入(string userId, string password)
{
var account = new Account() { UserId = userId, Password = password };
ScenarioContext.Current.Set(account, "account");
}
[When(@"我按下Login")]
public void When我按下Login()
{
var account = ScenarioContext.Current.Get<Account>("account");
var actual = this._security.IsVerify(account.UserId, account.Password);
ScenarioContext.Current.Set<bool>(actual, "actual");
}
[Then(@"結果應為 (.*)")]
public void Then結果應為(bool expected)
{
var actual = ScenarioContext.Current.Get<bool>("actual");
Assert.AreEqual(expected, actual);
}
程式碼如下:
而,被測端程式碼,只是很簡單的邏輯
public bool IsVerify(string userId, string password)
{
return userId == "yao" && password == "1234";
}
程式碼如下:
文章出自:https://www.dotblogs.com.tw/yc421206/2014/12/25/unit_test_specflow_scenario_outline
專案位置:https://dotblogsamples.codeplex.com/SourceControl/latest#Simple.SpecflowLogin/
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET