Frage

Visual Studio folder structure

Ich benötige einen Rat, wie ich Testläufe für Komponententests und Integrationstests in Visual Studio einfach trennen kann.Oft oder immer strukturiere ich die Lösung wie im obigen Bild dargestellt:separate Projekte für Unit-Tests und Integrationstests.Die Unit-Tests werden sehr häufig ausgeführt, während die Integrationstests natürlich ausgeführt werden, wenn der Kontext korrekt ausgerichtet ist.

Mein Ziel ist es, irgendwie konfigurieren zu können, welche Tests (oder Testordner) ausgeführt werden sollen, wenn ich eine Tastenkombination verwende.Die Tests sollten vorzugsweise von einem grafischen Testläufer (ReSharpers) ausgeführt werden.Also zum Beispiel

  • Alt+1 führt die Tests im Projekt BLL.Test aus,
  • Alt+2 führt die Tests im Projekt DAL.Tests aus,
  • Alt+3 führt beide aus (d. h.alle Tests im Ordner [Tests] und
  • Alt+4 führt die Tests im Ordner [Tests.Integration] aus.

TestDriven.net bietet die Möglichkeit, nur den Test im ausgewählten Ordner oder Projekt auszuführen, indem Sie mit der rechten Maustaste darauf klicken und Test(e) ausführen auswählen.Es wäre großartig, dies tun zu können, aber über einen Tastaturbefehl und mit einem grafischen Testläufer.

TestDriven.net test run output

Derzeit verwende ich VS2008, ReSharper 4 und nUnit.Aber auch Ratschläge für ein Setup im Allgemeinen sind natürlich willkommen.

War es hilfreich?

Lösung

Ich habe tatsächlich selbst eine Lösung dafür gefunden, indem ich einen an ein Makro gebundenen Tastaturbefehl verwendet habe.Das Makro wurde über das Menü Extras > Makros > Temporäres Makro aufzeichnen aufgezeichnet.Während der Aufnahme habe ich meinen Ordner [Tests] ausgewählt und ReSharpers UnitTest.ContextRun ausgeführt.Dies führte zu folgendem Makro:

Sub TemporaryMacro()
    DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate
    DTE.ActiveWindow.Object.GetItem("TestUnitTest\Tests").Select(vsUISelectionType.vsUISelectionTypeSelect)
    DTE.ExecuteCommand("ReSharper.UnitTest_ContextRun")
End Sub

die dann an einen eigenen Tastaturbefehl unter Extras>Optionen>Umgebung>Tastatur gebunden wurde.

Was jedoch noch toller wäre, wäre eine allgemeinere Lösung, bei der ich genau konfigurieren kann, welche Projekte/Ordner/Klassen wann ausgeführt werden sollen.Beispielsweise mittels einer XML-Datei.Dies könnte dann problemlos in die Versionskontrolle eingecheckt und an alle verteilt werden, die mit dem Projekt arbeiten.

Andere Tipps

Dies ist eine etwas umständliche Lösung, aber Sie könnten einige konfigurieren externe Tools für jede Testgruppe, die Sie ausführen möchten.Ich bin mir nicht sicher, ob Sie den ReSharper-Testläufer auf diese Weise starten können, aber Sie können die Konsolenversion von nunit ausführen.Sobald Sie diese Tools eingerichtet haben, können Sie den Befehlen „Tools.ExternalCommand1“, „Tools.ExternalCommand2“ usw. Tastaturkürzel zuweisen.

Das lässt sich nicht wirklich gut skalieren und ist umständlich zu ändern – aber es gibt Ihnen Tastaturkürzel zum Ausführen Ihrer Tests.Es scheint, dass es einen viel einfacheren Weg geben sollte, dies zu tun.

Sie können ein VS-Makro verwenden, um die XML-Datei zu analysieren und dann nunit.exe mit dem Befehlszeilenargument /fixture aufzurufen, um anzugeben, welche Klassen ausgeführt werden sollen, oder eine Auswahlspeicherdatei generieren und nunit damit ausführen.

Ich habe das noch nie benutzt, aber vielleicht könnte es helfen ...

http://www.codeplex.com/VS2008UnitTestGUI

"Projektbeschreibung In diesem Projekt geht es darum, den gesamten Unit -Test innerhalb mehrerer .NET -Unit -Tests zu leiten, die mit Visual Studio 2008 codiert sind."

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top