SpecFlow - parallele Tests ausführen

8

Ich implementiere Tests mit SpecFlow, die nichts miteinander zu tun haben. Gibt es eine Konfigurationsoption für SpecFlow, die eine parallele Testausführung ermöglicht? Ich verwende VS10 und MSTest-Runner, der die Ausführung von "bis zu 5 parallelen Komponententests" unterstützt, wie sie in der Dokumentation behaupten.

Danke, max.yz

    
max.yz 22.05.2011, 08:41
quelle

4 Antworten

3

Es gibt ein neues Tool namens SpecRun , das kürzlich von den Machern von SpecFlow veröffentlicht wurde. Mit SpecRun können Sie diese Tests parallel ausführen. Wenn Sie das SpecRun.Nunit-Paket damit verwenden, können Sie NUnit-Tests parallel ausführen. Wir verwenden SpecRun auf unserem CI-Server, um die Tests parallel auszuführen, aber die Entwickler verwenden, was immer sie wollen.

Das Ändern des Test-Frameworks kann störend sein. Da alle unsere Tests in NUnit gestartet wurden, haben wir einfach den neuen SpecRun-Runner hinzugefügt und nichts anderes geändert. Sehr einfach und transparent für die Entwickler. Und da es in NuGet verfügbar ist, war es sehr einfach zu installieren.

    
Chris Edwards 08.10.2012 18:40
quelle
2

Ich habe mich von MSTest zu MbUnit bewegt, um dies zu erreichen. Mit dem ParallelizableAttribute können Sie eine Parallelität auf Testgerät-Ebene mit MbUnit erreichen. Da die Test-Fixtures jedoch aus den .feature-Gherkin-Dateien generiert werden, musste ich den SpecFlow-Quellcode abrufen und die MbUnitTestGeneratorProvider-Klasse im TechTalk.SpecFlow.Generator-Projekt ändern, um das ParallelizableAttribute auszugeben. Also hast du so etwas:

%Vor%

Wenn Sie dies kompilieren und verwenden, werden Sie mit parallelisierbaren Test Fixtures enden:

%Vor%

Das einzige Problem dabei ist, dass Sie sicherstellen müssen, dass die Testadapter nicht miteinander in Konflikt stehen. Das heißt, ein Test von einem Gerät fügt eine Datenbankzeile hinzu oder ändert sie, die einen Test bricht, der zur gleichen Zeit ausgeführt wird. Es gibt Möglichkeiten, aber das ist wahrscheinlich außerhalb der Reichweite Ihrer ursprünglichen Frage.

Alex.

    
Alex Webber 24.05.2011 10:01
quelle
2

Ich habe eine Lösung erstellt, die eine nant-Build-Datei generiert, die in einer benutzerdefinierten parallelen Aufgabe nunit verwendet:

Ссылка

Da meine Legacy-Tests geschrieben wurden, bekomme ich Backend-Concurrency-Probleme, also war es für mich (noch) nicht erfolgreich, aber hoffentlich funktioniert das für jemand anderen.

    
Marty 01.05.2015 05:02
quelle
0

Es gibt eine Option in der Datei MSTest .testsettings für das Testprojekt. Standardmäßig führt der Test Runner nur jeweils einen Test durch, indem das Attribut parallelTestCount des Knotens Execute auf 0 gesetzt wird und auf so vielen Threads ausgeführt wird, wie verfügbar sind ( Aus irgendeinem Grund beschränkt auf maximal 5)

Klicken Sie mit der rechten Maustaste auf die .teststtings-Datei und wählen Sie mit; Wählen Sie einen XML-Editor und los gehts.

Sie dürfen keine codierten UI-Tests ausführen oder keine Datensammelpunkte konfigurieren, damit dies funktioniert.

Für eine detailliertere Erklärung siehe diesen Artikel

    
Pete Stensønes 25.01.2012 18:40
quelle