Đây là dưa chuột của tôi:Specflow Kịch bản Outline không tạo dự kiến đang bước
Scenario Outline: Login using valid email address
Given I have not logged into the current computer
And Username <username> and password <password> is a valid account
When I start the client
And Login using username <username> and password <password>
Then The client should navigate to first time screen
Examples:
| username | password |
| [email protected] | password001 |
| valid002 | password002 |
này tạo ra các tập tin bước sau:
[Binding]
public class UserLoginSteps
{
[Given(@"I have not logged into the current computer")]
public void GivenIHaveNotLoggedIntoTheCurrentComputer()
{
ScenarioContext.Current.Pending();
}
[Given(@"Username valid(.*)@xyz\.com and password password(.*) is a valid account")]
public void GivenUsernameValidXyz_ComAndPasswordPasswordIsAValidAccount(int p0, int p1)
{
ScenarioContext.Current.Pending();
}
[When(@"I start the client")]
public void WhenIStartTheClient()
{
ScenarioContext.Current.Pending();
}
[When(@"Login using username valid(.*)@xyz\.com and password password(.*)")]
public void WhenLoginUsingUsernameValidXyz_ComAndPasswordPassword(int p0, int p1)
{
ScenarioContext.Current.Pending();
}
[Then(@"The client should navigate to first time screen")]
public void ThenTheClientShouldNavigateToFirstTimeScreen()
{
ScenarioContext.Current.Pending();
}
}
Những vấn đề như sau:
- tạo regex cho tên người dùng dựa trên mục nhập đầu tiên trong cột ví dụ. Đây không phải là điều tôi muốn vì không phải tất cả các ví dụ đều tuân theo mẫu đó.
- Tên phương pháp đang sử dụng mục nhập đầu tiên trong cột ví dụ (ví dụ: Khi đăng nhậpUsingUsernameValidXyz_ComAndPasswordPassword). Điều này rất khó đọc và nếu dữ liệu trong bảng ví dụ thay đổi tên phương thức không còn đúng, hãy điền vào các thông số int. Họ nên là chuỗi.
Tôi mong chờ thế hệ nét bước để một cái gì đó ra như thế này:
[When(@"Login using username (.*) and password (.*)")]
public void WhenLoginUsingUsernameAndPassword(string p0, string p1)
{
ScenarioContext.Current.Pending();
}
Tôi có thiếu cái gì? Có cách nào để ảnh hưởng đến cách SpecFlow tạo ra các phương pháp bước cho Kịch bản phác thảo? Nếu không, cách tốt nhất để khắc phục điều này là gì nếu không có mã tính năng được tạo sau khi thay đổi các thay đổi của tôi
Đồng ý. Đối xử với regex được tạo tự động chỉ là một gợi ý, nó không phải lúc nào cũng nhận được nó khá đúng (xử lý ngôn ngữ tự nhiên là khó). Một mẹo, nếu bạn gắn dấu ngoặc kép xung quanh những thứ như và trong các bước của bạn thì đôi khi nó cung cấp cho SpecFlow đủ gợi ý rằng nó tạo ra kết quả hợp lý hơn. Ví dụ: 'Và Tên người dùng' "và mật khẩu" "là tài khoản hợp lệ' sẽ khiến SpecFlow tạo bước bằng' [Given (@ "Tên người dùng" "(. *)" "Và mật khẩu" "(. *) "" là một tài khoản hợp lệ ")]'. –