Delen via


Testuitvoering met Hot Reload

Testuitvoeringen in Visual Studio omvatten het bouwen van het project om de binaire bestanden op schijf bij te werken voordat u Test Platform gebruikt om uw tests uit te voeren. De buildtijd in Visual Studio kan variƫren, afhankelijk van het soort wijzigingen in de code. Voor grotere oplossingen zijn builds vaak het duurste deel van de testuitvoering. In Visual Studio 2022 en hoger kan de testuitvoering met dynamische herload worden ingeschakeld om de uitvoering van de test te versnellen door builds te overslaan voor ondersteunde scenario's.

Wat wordt ondersteund?

  • C# en VB-projecten gericht op .NET 6.0 en hoger
  • Testprojecten die zijn gebouwd voor de DEBUG-configuratie
  • Visual Studio 2022 en hoger

Testuitvoering met Hot Reload inschakelen

Schakel deze functie in door Testopties>>(Experimenteel) Hot Reloaded Test Runs in te schakelen voor C# en VB-testprojecten die gericht zijn op .NET 6 en hoger. Schermopname van de knop Hot Reloaded Test Runs inschakelen op de pagina Opties voor Visual Studio-test. Wanneer dit is geselecteerd, wordt de uitvoering van tests hotload gebruikt voor ondersteunde scenario's

Waarom is het experimenteel?

Dit is een nieuwe manier om de test uit te voeren, waarbij we een veelgebruikt pad voor het valideren van code wijzigen. We verwachten ook dat de gebruikerservaring rond deze functie verandert naarmate we meer feedback van gebruikers ontvangen. Om deze twee redenen hebben we deze functie momenteel gelabeld als 'experimenteel'.

Hoe het werkt

Zodra de optie is ingeschakeld, gebruikt Test Explorer indien mogelijk automatisch de testuitvoering met hot-reload. Als een hot-reload niet mogelijk is, valt het terug op het normale gedrag van het bouwen en uitvoeren van tests. Als gebruiker die tests uitvoert, hoeft u geen wijzigingen aan te brengen in uw werkstroom (dat wil gezegd, code blijven bewerken en tests uitvoeren).

Onder de schermen gebruiken we dezelfde infrastructuur bewerken en doorgaan die aanwezig is in de zojuist uitgebrachte Hot Reload-ervaring voor het bewerken van C#/VB-code tijdens runtime om de aangebrachte wijzigingen te bepalen. Om deze reden voeren we alleen een hot reload uit als er geen "onbeleefde bewerkingen" zijn; in dat geval bouwen we eerst uw tests voordat we ze uitvoeren. Lees de documentatie Bewerken en Doorgaan voor meer informatie over ondersteunde bewerkingen

Hoeveel sneller is de testuitvoering?

Er zijn veel variabelen die worden afgespeeld bij het schatten hoeveel tijd deze functie u bespaart. Voorbeeld:

  • Hoe lang de projectbuild duurt.
  • Wat voor soort bewerking is gemaakt.
  • Hoe groot het bestand is waar de bewerking is aangebracht.
  • Waar de bewerking is gemaakt (als het een bladproject was of niet).

Uiteindelijk zijn de snelheidsverbeteringen direct gerelateerd aan de buildtijd die zou hebben plaatsgevonden in die specifieke testuitvoering.

Opmerkingen

  • De eerste testuitvoering na het inschakelen van de optie of het openen van Visual Studio leidt tot een projectbuild.
  • Bestanden in de editor worden mogelijk niet opgeslagen wanneer tests worden uitgevoerd. Om deze problemen op te lossen en voordat je incheckt, zorg dat je een volledige build uitvoert (Ctrl+Shift+B).
  • De binaire bestanden op schijf worden niet bijgewerkt wanneer de testuitvoering met dynamisch opnieuw laden plaatsvindt.
  • Het uitvoeren van hot-reload tests werkt niet met "Test>Alle tests uitvoeren", "Alle tests uitvoeren in weergave" in Test Explorer, en werkt ook niet met Alle tests uitvoeren vanuit het oplossingsknooppunt in Solution Explorer. De functie werkt niet met deze opdrachten omdat ze momenteel garanderen dat de hele oplossing wordt gebouwd.
  • Wanneer tests met niet-ondersteunde doelframeworks (lager dan .NET 6.0) worden uitgevoerd, vindt er een projectbuild plaats.
  • Als er inconsistenties zijn tussen wat er op de schijf staat en wat Test Explorer weergeeft, kunt u een oplossing/projectbuild overwegen met Ctrl+Shift+B en vervolgens tests uitvoeren. Elke specifieke build vervangt de testresultaten van hot-reload door de reguliere testresultaten van een volledige build.

Bekende problemen

  • Testuitvoering met hot reload vindt niet plaats in de volgende scenario's:
    • Codedekking
    • Live Unit Testen
    • Profileringsproces
    • Fouten opsporen
  • Stack-traceringen kunnen onleesbaar zijn door de aanwezigheid van onleesbare tokens. Dit probleem wordt hier bijgehouden en is gepland voor een oplossing in .NET 7.0
    • De aanbevolen tijdelijke oplossing in dit geval is om uw project te bouwen en de test opnieuw uit te voeren.

Uw feedback is belangrijk

Zoals eerder vermeld, is uw feedback vereist om deze experimentele functie te kunnen voltooien. Als u een suggestie hebt voor de manier waarop de ervaring moet zijn of problemen ondervindt, neem dan even de tijd om problemen aan ons te melden. Alleen met uw feedback kunnen we ervoor zorgen dat kritieke problemen worden opgelost en toekomstige beslissingen worden gerangschikt op basis van uw invoer.

Gebruik het feedbackmechanisme van Visual Studio om ons te bereiken.