2012-03-29 7 views
1

Ich bin neu, um Tests in Visual Studio/MSTest zu laden, und ich habe kürzlich einen neuen Auslastungstest erstellt, um einige Szenarien mit hohem Datenverkehr für einen WCF-Dienst zu validieren. Ich möchte dies dem Testprojekt für den Service hinzufügen, aber ich möchte nicht, dass der Test ausgeführt wird, wenn ich "Alle Tests in der Lösung ausführen" oder als Teil unseres Continuous Integration Build-Verifizierungsprozesses, weil a) es 5 dauert Minuten zum Ausführen und b) der Service-Aufruf, den es testet, generiert viele tausend E-Mail-Nachrichten. Grundsätzlich möchte ich das Äquivalent zum Hinzufügen des [Ignore]-Attributs zu einem Komponententest machen, so dass der Auslastungstest nur ausgeführt wird, wenn ich mich explizit dazu entschließe, ihn auszuführen.Gibt es eine Möglichkeit, einen Auslastungstest in Visual Studio 2010 zu deaktivieren/zu ignorieren, ohne Testlisten zu verwenden?

This MSDN Article ("How to: Disable and Enable Tests") schlägt vor, dass die einzige, um den Test zu deaktivieren ist, Testlisten (.VSMDI-Dateien) zu verwenden, aber ich habe nicht viel Erfahrung mit ihnen, sie scheinen wie ein Ärger zu verwalten, will ich nicht haben Ändern unserer CI-Build-Definition und this blog post sagt, dass Testlisten in VS2012 veraltet sind. Irgendwelche anderen Ideen?

Edit: Ich akzeptierte die Antwort von Mauricio, die die Belastungstests in ein separates Projekt zu legen und separate Lösungen, eine mit den Belastungstests und eine ohne zu warten. Auf diese Weise können Sie die (schneller laufenden) Komponententests während der Entwicklung ausführen und auch die (langsamer ablaufenden) Auslastungstests während der Buildverifizierung ohne Verwendung von Testlisten einschließen.

Antwort

0

Dies sollte kein Problem für Ihre CI-Build-Definition sein. Warum?

Um Komponententests als Teil Ihres Erstellungsprozesses auszuführen, müssen Sie die Builddefinition so konfigurieren, dass sie auf einen Testcontainer zeigt (normalerweise eine DLL-Datei in den Testklassen und -methoden). Auslastungstests funktionieren nicht auf diese Weise. Sie werden in .loadtest-Dateien (die nur XML-Dateien sind) definiert, die von der MSTest-Engine verwendet werden.

Wenn Sie keine weiteren Änderungen an Ihrer CI-Build-Definition vornehmen, wird der Auslastungstest ignoriert.

Wenn Sie den Test als Teil eines Builds ausführen möchten, müssen Sie die Builddefinition für die Verwendung der .loadtest-Datei konfigurieren.

Vermeiden Sie Testlisten. Wie du gesagt hast, werden sie in VS11 als veraltet angesehen.

Bearbeiten: Die einfachste Möglichkeit zu vermeiden, den Auslastungstest als Teil von Visual Studio auszuführen "Run All" -Tests ist eine andere Lösung für Ihre Auslastungstests erstellen.

+0

Die Hauptanforderung ist, dass LoadTests nicht ausgeführt werden, wenn Sie "Alle Tests in Lösung ausführen" von VS wählen; irgendwelche Ideen, wie man das erreicht? –

+1

Der einfachste Ansatz, der Ihnen in den Sinn kommt, ist, eine andere Lösung für Ihren Belastungstest zu erstellen.Dies sollte kein Problem sein, da Load - und Web - Tests keine Abhängigkeiten zu Ihrem Lösungscode aufweisen (normalerweise Back - Box - Tests, es sei denn, Sie verwenden Komponententests, um Ihren Auslastungstest zu erstellen)/ –

+0

Vielen Dank - die Empfehlung zum Erstellen eines andere Lösung scheint für jetzt die beste Option zu sein (obwohl es immer noch etwas Overhead hinzufügt). Ich werde dies als die Antwort markieren! –

0

Warum möchten Sie nicht Test Lists verwenden? Ich denke, das ist der beste Weg, das zu tun. Create different Test Lists für jeden Testtyp (Unit-Test, Lasttest ...) und dann in Ihrem MSTest Befehl ausführen die Test List(s) Sie wollen:

  • MSTest \testmetadata:testlists.vsmdi \testlist:UnitTests (nur Unittests)
  • MSTest \testmetadata:testlists.vsmdi \testlist:LoadTests (nur Lasttests)
  • MSTest \testmetadata:testlists.vsmdi \testlist:UnitTests \testlist:LoadTests (UnitTests & LoadTests)