41 Stimmen

Wie führt man SpecFlow-Tests in Visual Studio 2010 aus?

Versuchen Sie, SpecFlow mit einer neuen VS2010 Professional-Installation zum Laufen zu bringen. Eine neue Konsolenanwendung erstellt und Verweise auf NUnit und SpecFlow hinzugefügt. Ein SpecFlow-Feature erstellt. Das .feature mit dem Standardvorlagencode wird erstellt.

Jetzt versuche ich, diesen Test auszuführen, aber ich weiß nicht, wie. Wenn ich mit der rechten Maustaste auf das Projekt (auf der obersten Ebene) klicke, gibt es keine Option "Run test(s)" im Dropdown-Menü der Maus. Wurde SpecFlow nicht korrekt installiert, vermisse ich einige Referenzen oder muss ich ein anderes Tool installieren?

0 Stimmen

Hinzufügen der VS-Erweiterung "nunit test adapter", die nunit-Tests in den VS-Testrunner einfügt.

82voto

mfloryan Punkte 7577

Wenn Sie in der Lage sein wollen, Ihre Tests direkt aus Visual Studio 2010 ohne zusätzliche Tools oder Erweiterungen auszuführen, sollten Sie SpecFlow so konfigurieren, dass es MsTest als Unit Test Framework verwendet.

Dies kann in der Konfigurationsdatei Ihrer Anwendung wie folgt geschehen:

  <configSections> 
    <section 
       name="specFlow" 
       type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow"/> 
  </configSections> 
  <specFlow> 
    <unitTestProvider name="MsTest" /> 
    <!--
        Use this if you're running VS2010
        <unitTestProvider name="MsTest.2010" />
    -->
  </specFlow> 

Die generierte Code-Behind-Datei enthält dann MsTest-Tests, die von Visual Studio erkannt werden und mit dem Build-it Test Runner ausgeführt werden können.

Sie brauchen NUnit überhaupt nicht zu verwenden.

1 Stimmen

Hier ist die specflow-Dokumentation über den unitTestProvider und seine möglichen Werte: github.com/techtalk/SpecFlow/wiki/Unit-test-providers . Es ist wahrscheinlicher, dass es auf dem neuesten Stand bleibt als diese Antwort (da es sich um die Specflow-Dokumente handelt, nichts gegen den Autor der Antwort) :)

10voto

jbandi Punkte 16069

SpecFlow bietet selbst keinen Läufer an.
SpecFlow generiert Fixtures für eines der gängigen Unit-Test-Frameworks. In SpecFlow 1.3 werden NUnit (Standard), MSTest und xUnit.net unterstützt (konfiguriert in der App.config).

Um die Geräte zu betreiben, müssen Sie einen Läufer verwenden, der sie betreiben kann. ReSharper ist eine sehr gute Option für einen Test-Runner, der in VisualStudio integriert ist, aber er ist nicht kostenlos. ReSharper bietet Ihnen das Kontextmenü "Run Unit Tests" im Solution Explorer, auf das Sie sich beziehen.

Eine Alternative für die Integration von VisualStudio ist TestDriven.Net (das ebenfalls ein Kontextmenü bietet).

Für NUnit können Sie auch die Runner verwenden, die mit NUnit selbst geliefert werden (es gibt einen GUI-Runner und einen Kommandozeilen-Runner).
Für MSTest können Sie die systemeigene VisualStudio-Integration zum Ausführen von Tests verwenden (ich finde diese jedoch etwas unhandlich).
xUnit.net hat auch seine Runner, mit denen ich aber nicht vertraut bin.

Außerdem können Sie MSBuild-Aufgaben verwenden, um die Vorrichtungen auszuführen ...

0 Stimmen

Sie könnten Links zu den erwähnten Tools hinzufügen, damit sie leichter zu finden sind.

6voto

Not loved Punkte 32126

Nur um diese Fragen zu aktualisieren, sollten Sie in den neuesten Versionen von specflow (verwenden Sie MsTest.2010)

<configSections> 
    <section 
       name="specFlow" 
       type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow"/> 
  </configSections> 
  <specFlow> 
    <unitTestProvider name="MsTest.2010" /> 
  </specFlow> 

siehe SpecFlow verwendet fälschlicherweise NUnit

4voto

Alister Scott Punkte 3675

Ich habe einen Blog-Beitrag darüber geschrieben, wie man eine Batch-Datei als externes Tool verwendet, um SpecFlow-Funktionen in NUnit automatisch auszuführen und einen HTML-Bericht zu erstellen. Siehe: http://watirmelon.com/2011/02/18/c-sharp-atdd-on-a-shoestring/

4voto

pkr2000 Punkte 214

Etwas, das mich überrascht hat. Ich musste sicherstellen, dass der Projekttyp ein Testprojekt war. Ich musste das Projekt entladen und die Projekt-GUID in die eines Unit-Test-Projekts ändern. Sobald ich das getan hatte, erwachte der SpecFlow-Test (und jeder andere) im Projekt zum Leben

0 Stimmen

Gute Antwort, mir war nicht klar, dass ich den falschen Projekttyp hinzugefügt hatte, aber das hat mir geholfen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X