Delen via


Opnieuw opstarten

Met TAEF kan een test specificeren dat het kan veroorzaken of vereisen dat de computer opnieuw wordt opgestart. De functie bestaat uit twee tot drie onderdelen: metagegevens om de test te markeren als mogelijk een herstart veroorzaakt of vereisen, een API om aan te vragen dat TAEF een herstart uitvoert of TAEF op de hoogte stelt van een door een test geïnitieerde herstart en een opdrachtoptie om ervoor te kiezen om deze tests uit te voeren wanneer deze lokaal worden uitgevoerd.

Gedrag

De specifieke semantiek van het opnieuw opstarten van de computer vereist enkele wijzigingen in het TAEF-uitvoeringsmodel, de garanties voor het instellen en opschonen van bewerkingen, en het succes- en foutgedrag.

  • Het gedrag voor opnieuw opstarten is alleen beschikbaar voor een test (met de juiste metagegevens), niet voor armaturen (installatie en opschonen).
  • Als de reboot-API wordt gebruikt vanaf een andere locatie dan een test met de juiste markeringen, wordt de functie niet geretourneerd. In plaats daarvan doodt TAEF het testproces. Dit vertegenwoordigt een fout in de manier waarop de test is geschreven en de testcode moet worden opgelost.
  • Op de herstartgrens worden testinrichtingen niet uitgevoerd. Dit betekent dat teardownbewerkingen niet worden uitgevoerd voordat de herstart wordt uitgevoerd (ongeacht of de test de herstart initieert of TAEF de herstart zelf veroorzaakt) en dat installatiebewerkingen niet worden uitgevoerd na de herstart.
  • Logboekregistratie (en dus logboekfouten) wordt genegeerd vanaf het moment dat u een herstart meldt of aanvraagt tot de test is voltooid.

Metagegevens

Als u het gebruik van de Reboot-API's wilt inschakelen, moet een test worden gemarkeerd door de metagegevens RebootPossible in te stellen op 'true'. Deze metagegevens voldoen aan de gebruikelijke regels voor overname van metagegevens, zodat deze kunnen worden opgegeven op klasseniveau als een test in uw klas opnieuw kan worden opgestart (hoewel gezien de nogal zware aard van het opnieuw opstarten, het raadzaam is om expliciete beslissingen te nemen over welke test kan en kan herstarten niet starten). Raadpleeg de documentatie over ontwerptests in C++ en ontwerptests in C# voor voorbeelden van metagegevensspecificaties.

API

Er zijn twee hoofdfuncties voor het afhandelen van het opnieuw opstarten van machines:

  • Reboot(Option) vraagt dat TAEF een herstart van de testmachine start.
  • RebootCustom(Option) meldt TAEF dat de test een herstart van de testmachine veroorzaakt. Deze API biedt ook ondersteuning voor systeemcrash. TAEF zorgt ervoor dat de toepasselijke gegevens worden leeggemaakt nadat de API is geretourneerd.

De parameter Option specificeert het gedrag van het hervatten, een van:

  • Opnieuw uitvoeren, waardoor TAEF dezelfde test opnieuw uitvoert nadat het opnieuw opstarten is opgetreden
  • Ga door, waardoor TAEF de volgende test uitvoert nadat het opnieuw opstarten is opgetreden

systeemeigen

Benader de reboot-API's door de header Interruption.h te includeren en de functies aan te roepen in de WEX::TestExecution::Interruption namespace. De vier mogelijke oproepen zijn:

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

#B0 #A1 beheerd

Roep een van de twee methoden aan in de statische klasse Onderbreking in de WEX. TestExecution-naamruimte , die zich in Te.Managed.dllbevindt:

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

Gebruik van opdrachtprompt

Het ideale gebruik van deze functie is het draaien van TAEF-tests die mogelijk opnieuw worden gestart met Cross Machine Execution of via WTT. In deze gevallen schakelt TAEF de uitvoering van het opnieuw opstarten impliciet* in, omdat deze uw werkstroom niet mag verstoren. Als u tests handmatig opnieuw opstart op de lokale computer of het standaardpad moet overschrijven dat TAEF gebruikt om de status ervan in de cache te plaatsen, moet u zich expliciet aanmelden voor het opnieuw opstarten van tests. Als u dit niet doet, wordt een herstarttest gemarkeerd als geblokkeerd. Als u herstarttests wilt inschakelen bij lokale uitvoering, gebruikt u het volgende opdrachtargument:

Te.exe /rebootStateFile:MyRestartFile.xml

TAEF maakt het bestand dat is opgegeven om de status op te slaan (welke tests al zijn uitgevoerd, elke TAEF-opdracht of omgevingsopties, enzovoort) en hervat vanaf waar het was gebleven toen het opnieuw is opgestart. TAEF zorgt ervoor dat het zichzelf opnieuw uitvoert wanneer de machine weer opstart.

Houd er rekening mee dat deze optie niet werkt op Arm-machines vanwege het verwijderen van een functie waarvan TAEF afhankelijk is om de tests te hervatten na het opnieuw opstarten (RunOnce-sleutel).

* Zolang u geen incompatibele uitvoeringsfuncties gebruikt (momenteel parallelle en testmodi).

Veelgestelde vragen

Als ik Opnieuw uitvoeren kies, kan ik op een andere manier zien of de test voor het eerst wordt aangeroepen of na een herstart?

TAEF biedt geen functionaliteit om dit te bereiken. De bedoeling van de optie voor opnieuw uitvoeren is om tests te schrijven waarvoor mogelijk een onbepaald aantal herstarts is vereist op basis van de status van de computer (zoals Windows Update uitvoeren voor voltooiing). Overweeg het gebruik van een ExecutionGroup en de continue optie om de taken op te splitsen in afzonderlijke testbewerkingen die op volgorde plaatsvinden vóór/na het opnieuw opstarten.

Welke TAEF-testtypen worden ondersteund?

Deze functie is beschikbaar voor systeemeigen, beheerde en scripttests.