Steuern der Ausführungsreihenfolge von Komponententests in Visual Studio

Steuern der Ausführungsreihenfolge von Komponententests in Visual Studio

Sie können Playlist verwenden

Klicken Sie mit der rechten Maustaste auf die Testmethode -> Zur Playlist hinzufügen -> Neue Playlist

Die Ausführungsreihenfolge wird so sein, wie Sie sie zur Wiedergabeliste hinzufügen, aber wenn Sie sie ändern möchten, haben Sie die Datei


Führen Sie Ihre Tests zu einem riesigen Test zusammen, der funktioniert. Um die Testmethode besser lesbar zu machen, können Sie so etwas tun wie

[TestMethod]
public void MyIntegratonTestLikeUnitTest()
{
    AssertScenarioA();

    AssertScenarioB();

    ....
}

private void AssertScenarioA()
{
     // Assert
}

private void AssertScenarioB()
{
     // Assert
}

Tatsächlich deutet das Problem, das Sie haben, darauf hin, dass Sie wahrscheinlich die Testbarkeit der Implementierung verbessern sollten.


Wie Sie inzwischen wissen sollten, sagen Puristen, dass es verboten ist, geordnete Tests durchzuführen. Das mag für Unit-Tests zutreffen. MSTest und andere Unit-Test-Frameworks werden verwendet, um reine Unit-Tests, aber auch UI-Tests, vollständige Integrationstests usw. auszuführen. Vielleicht sollten wir sie nicht Unit-Test-Frameworks nennen, oder vielleicht sollten wir sie unseren Bedürfnissen entsprechend verwenden. Das machen sowieso die meisten Leute.

Ich verwende VS2015 und MUSS Tests in einer bestimmten Reihenfolge ausführen, da ich UI-Tests (Selenium) durchführe.

Priorität - Macht überhaupt nichts Dieses Attribut wird vom Testsystem nicht verwendet. Es wird dem Benutzer für benutzerdefinierte Zwecke zur Verfügung gestellt.

bestellter Test - es funktioniert, aber ich empfehle es nicht, weil:

  1. Ein geordneter Test eine Textdatei, die Ihre Tests in der Reihenfolge auflistet, in der sie ausgeführt werden sollen. Wenn Sie einen Methodennamen ändern, müssen Sie die Datei reparieren.
  2. Die Testausführungsreihenfolge wird innerhalb einer Klasse respektiert. Sie können nicht anordnen, welche Klasse ihre Tests zuerst ausführt.
  3. Ein geordneter Test Datei ist an eine Konfiguration gebunden, entweder Debug oder Release
  4. Sie können mehrere bestellte Tests haben Dateien, aber eine gegebene Methode kann nicht in verschiedenen orderedtest wiederholt werden Dateien. Sie können also keinen bestellten Test haben Datei für Debug und eine andere für Release.

Andere Vorschläge in diesem Thread sind interessant, aber Sie verlieren die Möglichkeit, den Testfortschritt im Test Explorer zu verfolgen.

Sie haben die Lösung, von der Puristen abraten, die aber tatsächlich funktioniert:nach Deklarationsreihenfolge sortieren .

Der MSTest-Executor verwendet eine Interop, die es schafft, die Deklarationsreihenfolge abzurufen, und dieser Trick funktioniert, bis Microsoft den Test-Executor-Code ändert.

Das bedeutet, dass die an erster Stelle deklarierte Testmethode vor der an zweiter Stelle deklarierten ausgeführt wird usw.

Um Ihnen das Leben zu erleichtern, sollte die Deklarationsreihenfolge mit der alphabetischen Reihenfolge übereinstimmen, die im Test-Explorer angezeigt wird.

  • A010_ErsterTest
  • A020_SecondTest
  • usw.
  • A100_TenthTest

Ich empfehle dringend einige alte und erprobte Regeln:

  • verwenden Sie einen Schritt von 10, da Sie später eine Testmethode einfügen müssen
  • Vermeiden Sie die Notwendigkeit, Ihre Tests neu zu nummerieren, indem Sie einen großzügigen Schritt zwischen den Testnummern verwenden
  • verwenden Sie drei Ziffern, um Ihre Tests zu nummerieren, wenn Sie mehr als 10 Tests durchführen
  • verwenden Sie 4 Ziffern, um Ihre Tests zu nummerieren, wenn Sie mehr als 100 Tests durchführen

SEHR WICHTIG

Um die Tests nach Deklarationsreihenfolge auszuführen, müssen Sie Run All verwenden im Test-Explorer.

Angenommen, Sie haben 3 Testklassen (in meinem Fall Tests für Chrome, Firefox und Edge). Wenn Sie eine bestimmte Klasse auswählen und mit der rechten Maustaste auf Ausgewählte Tests ausführen klicken es beginnt normalerweise mit der Ausführung der an letzter Stelle deklarierten Methode.

Wieder, wie ich schon sagte, Befehl erklärt und gelistete Bestellung sollte übereinstimmen, sonst kriegst du im Handumdrehen große Probleme.