Hier ist meine gherkin:Specflow Szenario Überblick nicht zu erwarten Schritt Codegenerierung
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 |
Dies erzeugt den folgenden Schritt-Datei:
[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();
}
}
Die Probleme sind wie folgt:
- generiert Regex für Benutzername basiert auf dem ersten Eintrag in der Beispielspalte. Dies ist nicht das, was ich will, da nicht alle Beispiele diesem Muster folgen.
- Die Methodennamen verwenden den ersten Eintrag in der Beispielspalte (d. H. WhenLoginUsingUsernameValidXyz_ComAndPasswordPassword). Dies ist schwer zu lesen und wenn sich die Daten in der Beispieltabelle ändern, ist der Methodenname nicht mehr korrekt
- Der Typ für die Parameter ist int. Sie sollten String sein.
Ich würde den Schritt Definition Generation zur Ausgabe etwas wie folgt erwartet:
[When(@"Login using username (.*) and password (.*)")]
public void WhenLoginUsingUsernameAndPassword(string p0, string p1)
{
ScenarioContext.Current.Pending();
}
bin ich etwas fehlt? Gibt es eine Möglichkeit, die Art zu beeinflussen, wie SpecFlow Schrittmethoden für Szenario-Outlines generiert? Wenn nicht, was ist der beste Weg, um dies zu beheben, ohne die Feature-generierten Code hinter Clobbering meine Änderungen
Einverstanden. Behandle die automatisch generierte Regex als nur einen Vorschlag, es wird nicht immer richtig verstanden (Verarbeitung natürlicher Sprache ist schwierig). Ein Tipp, wenn Sie Anführungszeichen um Dinge wie und in Ihren Schritten halten dann gibt es manchmal SpecFlow genug von einem Hinweis, dass es sinnvollere Ergebnisse generiert. Zum Beispiel 'Und Benutzername" "und Passwort" "ist ein gültiges Konto" wird SpecFlow erzeugen den Schritt mit '[Gegeben (@" Benutzername "" (. *) "" Und Passwort "" (. *) "" ist ein gültiges Konto ")]. –