Freigeben über


Reboot

TAEF ermöglicht es einem Test, anzugeben, dass er einen Neustart des Computers verursachen oder erfordern kann. Das Feature besteht aus zwei bis drei Komponenten: Metadaten zum Kennzeichnen des Tests als mögliche Ursache oder Anforderung eines Neustarts, einer API zur Anforderung, dass TAEF einen Neustart durchführt oder TAEF über einen bevorstehenden Testinitiierungsneustart benachrichtigt, und einer Befehlsoption zum Aktivieren der Ausführung dieser Tests bei lokaler Ausführung.

Verhalten

Die besondere Semantik des Neustarts des Computers erfordert einige Änderungen am TAEF-Ausführungsmodell, die Garantien für Setup- und Bereinigungsvorgänge sowie das Erfolgs- und Fehlerverhalten.

  • Das Neustartverhalten ist nur für einen Test (mit den entsprechenden Metadaten), nicht für Geräte (Setup und Bereinigung) verfügbar.
  • Wenn die Neustart-API von einem anderen Ort als einem Test mit dem entsprechenden Markup verwendet wird, wird die Funktion nicht zurückgegeben. Stattdessen beendet TAEF den Testprozess. Dies stellt einen Fehler in der Art dar, wie der Test geschrieben wurde und der Testcode behoben werden sollte.
  • Testvorrichtungen werden nicht auf der Neustartgrenze ausgeführt. Dies bedeutet, dass Teardownvorgänge vor dem Neustart nicht ausgeführt werden (unabhängig davon, ob der Test den Neustart initiiert oder anfordert, dass TAEF den Neustart selbst verursacht) und Setupvorgänge nach dem Neustart nicht ausgeführt werden.
  • Die Protokollierung (und folglich Protokollfehler) wird ignoriert, sobald Sie einen Neustart benachrichtigen oder anfordern, bis der Test abgeschlossen ist.

Metadaten

Um die Verwendung der Neustart-APIs zu aktivieren, sollte ein Test gekennzeichnet werden, indem die RebootPossible-Metadaten auf "true" festgelegt werden. Diese Metadaten entsprechen den üblichen Regeln der Metadatenvererbung, sodass sie auf Klassenebene angegeben werden kann, wenn ein Test in Ihrer Klasse neu gestartet werden könnte (obwohl es angesichts der eher schwerwiegenden Natur des Neustarts ratsam wäre, explizite Entscheidungen darüber zu treffen, welcher Test Neustarts initiieren kann und welche nicht). Beispiele für metadatenspezifikation finden Sie in der Dokumentation zu Erstellungstests in C++ und Erstellungstests in C# .

API

Es gibt zwei Standard Funktionen für die Behandlung von Computerneustarts:

  • Reboot(Option) fordert an, dass TAEF einen Neustart des Testcomputers initiiert.
  • RebootCustom(Option) benachrichtigt TAEF, dass der Test einen Neustart des Testcomputers verursacht. Diese API unterstützt auch Systemabsturz. TAEF stellt sicher, dass die entsprechenden Daten geleert werden, nachdem die API zurückgegeben wurde.

Der Option-Parameter gibt das Verhalten des Lebenslaufs an, eines der folgenden:

  • Erneute Ausführung, sodass TAEF denselben Test nach dem Neustart erneut ausführt
  • Fahren Sie fort, damit TAEF den nächsten Test nach dem Neustart ausführt.

Ursprünglich

Greifen Sie auf die Neustart-APIs zu, indem Sie den Header Interruption.h einschließen und die Funktionen im WEX::TestExecution::Interruption-Namespace aufrufen. Die vier möglichen Aufrufe sind:

using namespace WEX::TestExecution;
Interruption::Reboot(RebootOption::Rerun);
Interruption::Reboot(RebootOption::Continue);
Interruption::RebootCustom(RebootOption::Rerun);
Interruption::RebootCustom(RebootOption::Continue);

Verwalteten

Rufen Sie eine der beiden Methoden in der statischen Klasse Interruption im WEX auf. TestExecution-Namespace , der sich in Te.Managed.dllbefindet:

using WEX.TestExecution;
Interruption.Reboot(RebootOption.Rerun);
Interruption.Reboot(RebootOption.Continue);
Interruption.RebootCustom(RebootOption.Rerun);
Interruption.RebootCustom(RebootOption.Continue);

Eingabeaufforderungsverwendung

Die ideale Verwendung für dieses Feature besteht darin, TAEF-Tests auszuführen, die möglicherweise mit computerübergreifender Ausführung oder über WTT neu gestartet werden. In diesen Fällen ermöglicht TAEF implizit die Neustartausführung*, da der Arbeitsablauf dadurch nicht gestört werden sollte. Wenn Sie Tests manuell auf dem lokalen Computer neu starten oder den Standardpfad überschreiben müssen, den TAEF zum Zwischenspeichern des Zustands verwendet, müssen Sie sich explizit für den Neustart von Tests anmelden. Andernfalls wird jeder neustartende Test als blockiert markiert. Verwenden Sie das folgende Befehlsargument, um Neustarttests bei der lokalen Ausführung zu aktivieren:

Te.exe /rebootStateFile:MyRestartFile.xml

TAEF erstellt die angegebene Datei, um ihren Zustand zu speichern (welche Tests bereits ausgeführt wurden, alle TAEF-Befehle oder Umgebungsoptionen usw.) und wird dort fortgesetzt, wo sie nach dem Neustart wieder aufgehört hat. TAEF übernimmt die erneute Ausführung, sobald der Computer nach dem Neustart wieder hochgefahren wird.

Beachten Sie, dass diese Option auf Arm-Computern aufgrund des Entfernens eines Features nicht funktioniert, von dem TAEF abhängig ist, um die Tests nach dem Neustart fortzusetzen (RunOnce-Schlüssel).

* Solange Sie keine inkompatiblen Ausführungsfeatures (derzeit Parallel- und Testmodus) verwenden.

Häufig gestellte Fragen

Wenn ich Erneut ausführen wähle, kann ich feststellen, ob der Test zum ersten Mal oder nach einem Neustart aufgerufen wird?

TAEF bietet keine Funktionalität, um dies zu erreichen. Die Absicht der Wiederholungsoption besteht darin, Es Ihnen zu ermöglichen, Tests zu schreiben, die möglicherweise eine unbestimmte Anzahl von Neustarts basierend auf dem Zustand des Computers erfordern (z. B. ausführen Windows Update bis zum Abschluss). Erwägen Sie die Verwendung einer ExecutionGroup - und der Continue-Option, um die Aufgaben in separate Testvorgänge aufzuteilen, die in der Sequenz vor/nach dem Neustart ausgeführt werden.

Welche TAEF-Testtypen werden unterstützt?

Dieses Feature ist für systemeigene, verwaltete und Skripttests verfügbar.