2012-04-12 6 views
26

Wir haben MSTest-Tests, die automatisch in stündlicher Produktion laufen. Einer dieser Tests ist mit [Ignore] gekennzeichnet, da er noch nicht für die Ausführung in unserer Produktionsumgebung bereit ist.
Jetzt möchte ich diesen Test (nur) in meiner lokalen Umgebung starten, weil meine lokale Umgebung für diesen Test bereit ist.
Ich versuche, diesen Test ausführen, indem Sie auf der linken Seite des Testcode auf ReSharper auf das Symbol klicken oder Run Ausgewählte Tests Symbol in Unit Test Sessions Fenster klicken und nichts geschieht.IgnoreAttribute ignorieren

Ich repariere es derzeit, indem ich die Linie [Ignore] auskommentiere. Aber jetzt muss ich darauf achten, die Kommentarzeichen (//) vor dem Einchecken des Codes zu entfernen.

Gibt es eine andere Möglichkeit, einen [Ignore] 'd-Test vorübergehend auszuführen?

+1

Das Merkwürdige ist, dass dies noch nie zuvor bei uns passiert ist. Mit VS2010 und R # 6 konnten wir einen ignorierten Test ausführen, indem wir auf den linken Ball über den Code klicken und "Run" ausführen. –

Antwort

27

Kürzlich, als ich Probleme wie diese erlebt haben, füge ich eine neue Build Configuration zum Visual Studio-Projekt etwas wie „Local Entwickler Debug“ genannt und die Einstellungen aus der vorhandenen Debug-Konfiguration verwenden. Dann gehe ich zu "Project -> MyProjectName Properties -> Build", stelle sicher, dass "Local Developer Debug" die ausgewählte Konfiguration ist und füge "LOCALDEVBUILD" zu "Conditional complication symbols" hinzu. Dies ermöglicht die Verwendung von Präprozessordirektiven zu ‚Toggle‘ Code während der Kompilierung:

#if (!LOCALDEVBUILD) 
    [Ignore] 
#endif 

Nicht sicher, ob dies ist, was Sie suchen ... aber es können Sie bestimmte Code auszuführen/verwenden je nach die Intentionen des Builds (über die Build-Konfiguration) ... Mit dieser Methode können Sie den Test für weitere "offizielle" Builds ignoriert lassen, ihn aber trotzdem in Ihrer Freizeit ausführen, wenn Sie dies wünschen.

2

Es sieht so aus, als ob es andere Möglichkeiten gibt, Tests mit der testrunconfig-Datei zu aktivieren/deaktivieren. Wenn Sie jedoch das IgnoreAttribute verwenden, wird es mit dem Code kompiliert und kann daher nicht einfach umgeschaltet werden.

Vom documentation:

Das Ignorieren für eine Einheit Attribut Test in der Quelldatei des Unit-Tests befindet, zusammen mit den anderen Attributen und den Quellcode des Tests. Wenn Sie einen Komponententest im Fenster Test-Manager deaktivieren und den Test später mit dem Befehlszeilendienstprogramm MSTest.exe ausführen, wird der Test weiterhin ausgeführt. Wenn Sie jedoch einen Komponententest mit dem Ignore-Attribut markieren, die Assembly kompilieren und den Test dann mit MSTest.exe ausführen, wird der Test nicht ausgeführt. Es wird nicht ausgeführt, da das Ignore-Attribut Teil des Tests geworden ist.

+2

OP möchte das Gegenteil dieser Funktion. Dies erlaubt es nur, einen Test lokal zu ignorieren, aber nicht während des automatisierten Tests zu ignorieren.OP möchte den Test während des automatisierten Tests weiterhin ignorieren, aber nicht lokal ignorieren. – Alain

18

Sie könnten auch eine test category verwenden, um die Testmethoden zu markieren, die Sie nicht in Ihren automatisierten Test aufnehmen möchten, z.

[TestCategory("IgnoreOnBuild")] 

Daher das Attribut [Ignore] nicht verwenden. Und kombinieren Sie dies mit einem Filter in Ihrer Build-Definition, unter Basic -> Automatisierter Test -> Test Source -> Test Case Filter:

TestCategory!=IgnoreOnBuild 
+0

Und innerhalb des Visual Studio Test Manager-Fensters können Sie nach "Trait:" IgnoreOnBuild "' filtern (verwenden Sie '-Trait:" IgnoreOnBuild "', um sie auszuschließen) –