Wie Sie programmgesteuert ignorieren einige Akzeptanz-tests mit TechTalk.SpecFlow und C#?
Habe ich mehrere feature-Dateien mit einigen Szenarien. Ich ignorieren müssen mehrere Szenarien oder Funktionen, markiert mit einigen @tag
abhängig von einer Bedingung. Ich habe gelesen, specflow Dokumentation aber nicht finden, gibt es etwas, das nützlich sein kann für meine Lösung. Ich möchte so etwas wie
[BeforeScenario("sometag")]
public static void BeforeScenario()
{
if(IgnoreTests)
{
//This is the hot spot
Scenario.DoSomethingToIgnoreScenarioIfConditionButRunScenarioIfConditionFalse();
}
}
Auch ich habe versucht dynamisch hinzufügen oder entfernen-tags
[BeforeScenario("sometag")]
public static void BeforeScenario()
{
if(IgnoreTests)
{
ScenarioContext.Current.ScenarioInfo.Tags.ToList().Add("ignore");
}
}
aber es hat nicht funktioniert. Vielleicht gibt es eine andere Möglichkeit, um dynamisch hinzufügen oder tags entfernen? Oder einige Methoden in ScenarioContext
Klasse, die ignoriert das aktuelle Szenario?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie mindestens 3 Optionen:
Konfigurieren Specflow zur Behandlung anstehenden Schritte ignorieren mit
missingOrPendingStepsOutcome="Ignore"
dann können Sie schreiben:Es ist vielleicht nicht das, was Sie wollen, je nach Ihren Anforderungen für die anstehenden Schritte.
Verwenden Sie Ihre unit-Test-framework integriert in die Methode zu ignorieren, den test während der Laufzeit. Also, wenn Sie z.B. NUnit dann mit der Geltend zu machen.Ignorieren():
Ich denke, das ist die sauberste/einfachste Lösung.
Oder wenn Sie möchten, dass es ein Test-framework-unabhängige Art und Weise und Sie haben keine Angst, Durcheinander mit Specflow Interna, dann können Sie die
IUnitTestRuntimeProvider
Schnittstelle:Dies funktioniert auch, wenn Sie Ihre Einheit testprovider aber es ist nicht garantiert, dass diese API nicht brechen in der Zukunft.