ENHEDSTEST i Asp.Net: Komplet vejledning
โก Smart opsummering
Enhedstestning af en ASP.NET-applikation i Visual Studio starter med et Unit Test Project, forbinder en reference til mรฅlprojektet, tilfรธjer MSTest [TestClass]- og [TestMethod]-attributter og kalder Assert-metoder for at bevise, at klasser opfรธrer sig som designet.
Test er et vรฆsentligt aspekt af ethvert programmeringssprog. Test For ASP.NET-applikationer er det muligt ved hjรฆlp af Visual Studio.
Visual Studio bruges til at oprette testkode. Det bruges ogsรฅ til at kรธre testkoden til en ASP.NET-applikation. Pรฅ denne mรฅde bliver det nemt at kontrollere for eventuelle fejl i en ASP.NET-applikation. I Visual Studio leveres testmodulet med en standardfunktionalitet. Man kan straks udfรธre en test for et ASP.NET-projekt.
Introduktion til testning for ASP.NET
Det fรธrste niveau i testningen af โโet ASP.NET-projekt er testning pรฅ enhedsniveau. Denne test af et programs funktionalitet. Testningen udfรธres for at sikre, at programmet opfรธrer sig som forventet. I ASP.NET er den fรธrste opgave at oprette et testprojekt i Visual Studio. Testprojektet vil indeholde den nรธdvendige kode til at teste programmet.
Lad os se pรฅ nedenstรฅende webside. Pรฅ siden har vi beskeden "Guru99 โ ASP.NETโ vises. Hvordan kan vi nu bekrรฆfte, at den korrekte meddelelse vises, nรฅr et ASP.NET-projekt kรธrer? Dette gรธres ved at tilfรธje et testprojekt til ASP.NET-lรธsningen (bruges til at udvikle webbaserede applikationer). Dette testprojekt vil sikre, at den korrekte meddelelse vises til brugeren.
Lad os nu se nรฆrmere pรฅ det og se, hvordan vi kan arbejde med test i ASP.NET.
Oprettelse af et .NET-enhedstestprojekt
Fรธr vi opretter et testprojekt, skal vi udfรธre nedenstรฅende trin pรฅ hรธjt niveau.
- Brug vores 'DemoApplication' brugt i de tidligere afsnit. Dette vil vรฆre vores applikation, som skal testes.
- Vi tilfรธjer en ny klasse til DemoApplication. Denne klasse vil indeholde en streng kaldet 'Guru99 โ ASP.NET.' Denne streng vil blive testet i vores testprojekt.
- Til sidst opretter vi et testprojekt. Dette bruges til at teste ASP.NET-applikationen.
Sรฅ lad os fรธlge ovenstรฅende trin pรฅ overordnet niveau og se, hvordan man implementerer testning.
Trin 1) Sรธrg for, at DemoApplication er รฅben i Visual Studio.
Trin 2) Lad os nu tilfรธje en ny klasse til DemoApplication. Denne klasse vil indeholde en streng kaldet 'Guru99 โ ASP.NET.' Denne streng vil blive testet i vores testprojekt.
Fรธlg nedenstรฅende trin for at tilfรธje en ny klasse.
- I Visual Studio skal du hรธjreklikke pรฅ 'DemoApplication' i Solution Explorer.
- Vรฆlg indstillingen Tilfรธj->Klasse fra kontekstmenuen.
Trin 3) I dette trin,
- Giv et navn 'Tutorial.cs' til den nye klasse.
- Klik pรฅ knappen 'Tilfรธj' for at tilfรธje filen til DemoApplication.
Nu tilfรธjes en ny klasse til filen "DemoApplication."
Trin 4) ร bn den nye Tutorial.cs-fil fra โDemoApplicationโ. Tilfรธj strengen โGuru99 โ ASP.NET.โ
For at รฅbne filen skal du dobbeltklikke pรฅ filen Tutorial.cs i Solution Explorer.
Filen vil have en eller anden standardkode allerede skrevet. Du skal ikke bekymre dig om den kode, bare tilfรธje nedenstรฅende kodelinje.
namespace DemoApplication { public class Tutorial { public String Name; public Tutorial() { Name = "Guru99 - ASP.Net"; } } }
Code Forklaring:-
- Navnevariablen er af typen streng.
- Til sidst, i konstruktรธren af โโTutorial-klassen, tildeles vรฆrdien af โโNavn-variablen. Vรฆrdien tildeles til โGuru99 โ ASP.NETโ
Trin 5) Gรฅ nu til demo.aspx-filen og tilfรธj kodelinjerne for at vise teksten "Guru99 โ ASP.NET.โ
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <% DemoApplication.Tutorial tp=new DemoApplication.Tutorial();%> <%=tp.Name%> </div> </form> </body> </html>
Code Forklaring:-
- Den fรธrste linje opretter et objekt af klassen 'Tutorial'. Dette er det fรธrste trin, nรฅr man arbejder med klasser og objekter. Navnet pรฅ objektet er 'tp'.
- Til sidst kalder vi 'tutorial.cs' fra filen demo.aspx. Den viser vรฆrdien af โโName-variablen.
Nรฅr du kรธrer ovenstรฅende program i Visual Studio, fรฅr du fรธlgende output.
Produktion:-
Fra outputtet ser du meddelelsen "Guru99 โ ASP.NETโ vises.
Trin 6) Lad os nu tilfรธje vores testprojekt til demoapplikationen. Dette gรธres ved hjรฆlp af Visual Studio.
- Hรธjreklik pรฅ Solution โ DemoApplication.
- I kontekstmenuen skal du vรฆlge muligheden 'Nyt projekt'.
Trin 7) Trinet involverer tilfรธjelsen af โโUnit Test-projektet til demoapplikationen.
- Klik pรฅ elementtype som 'Test' fra panelet til venstre.
- Vรฆlg punktet som 'Unit Test Project' fra listen, som vises i den midterste del af dialogboksen.
- Giv et navn til testprojektet. I vores tilfรฆlde er navnet 'DemoTest'.
- Klik til sidst pรฅ knappen 'OK'.
Du vil til sidst se DemoTest-projektet tilfรธjet til lรธsningsudforskeren. Med dette kan du ogsรฅ se andre filer som UnitTest1.cs, egenskaber osv. genereres som standard.
Afvikling af testprojektet
Testprojektet, der blev oprettet i det tidligere afsnit, bruges til at teste vores ASP.NET-applikation. I de fรธlgende trin vil vi se pรฅ, hvordan man kรธrer testprojektet.
- Det fรธrste trin ville vรฆre at tilfรธje en reference til ASP.NET-projektet. Dette trin udfรธres, sรฅ testprojektet har adgang til ASP.NET-projektet.
- Sรฅ skriver vi vores testkode.
- Til sidst vil vi kรธre testen ved hjรฆlp af Visual Studio.
Trin 1) For at teste vores demoapplikation skal det fรธrste testprojekt referere til demoapplikationen. Tilfรธj en reference til Demo.aspx-lรธsningen.
- Hรธjreklik pรฅ Demo Test-projektet
- Fra menuen vรฆlges indstillingen Tilfรธj->Reference.
Trin 2) Det nรฆste trin er at tilfรธje en reference til DemoApplication.
- Vรฆlg indstillingen Projekter i venstre side af dialogboksen
- Klik pรฅ afkrydsningsfeltet ud for DemoApplication
- Klik pรฅ knappen 'OK'.
Dette vil give et demotest-projekt mulighed for at teste vores DemoApplication.
Trin 3) Nu er det tid til at tilfรธje testkoden til vores testprojekt.
- For dette fรธrste dobbeltklik pรฅ UnitTest1-filen (UnitTest1-filen tilfรธjes automatisk af Visual Studio, nรฅr testprojektet oprettes) i Solution Explorer.
- Dette er den fil, der vil blive kรธrt for at teste ASP.NET-projektet.
Du vil se nedenstรฅende kode tilfรธjet af Visual Studio i filen UnitTest1.cs. Dette er den grundlรฆggende kode, der er nรธdvendig for, at testprojektet kan kรธre.
Trin 4) Det nรฆste trin er at tilfรธje den kode, der bruges til at teste strengen "Guru99 โ ASP.NET.โ
using System; using Microsoft.VisualStudio.TestTools.UnitTesting; using DemoApplication; namespace DemoTest { [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { Tutorial tp = new Tutorial(); Assert.AreEqual(tp.Name,"Guru99 - ASP.Net"); } } }
- Opret et nyt objekt kaldet 'tp' af typen Tutorial
- Assert.AreEqual-metoden bruges i .NET til at teste, om en vรฆrdi er lig med noget. Sรฅ i vores tilfรฆlde sammenligner vi vรฆrdierne af tp.Name med Guru99 โ ASP.NET.
Trin 5) Lad os nu kรธre vores testprojekt. Til dette skal vi gรฅ til menupunktet Test->Kรธr->Alle tests.
Produktion:-
Et test Explorer-vindue vises i Visual Studio. Dette vil vise ovenstรฅende resultat og vise, at en vellykket test blev kรธrt i Visual Studio.
MSTest-attributter og pรฅstande, du vil bruge
MicrosoftNavneomrรฅdet .VisualStudio.TestTools.UnitTesting indeholder et lille sรฆt attributter og assertions, der dรฆkker de fleste ASP.NET-enhedstests. Ved at lรฆre disse fรธrst bliver det nemmere at lรฆse og vedligeholde alle senere tests.
- [Testklasse] โ markerer klassen som en beholder med tests. MSTest scanner klasser med denne attribut pรฅ opdagelsestidspunktet.
- [Testmetode] โ markerer en offentlig, parameterlรธs metode som en individuel test. Metoden returnerer void, Task eller ValueTask.
- [TestInitialize] / [TestCleanup] โ kรธre fรธr og efter hver testmetode. Brug dem til at oprette og slette delte opsรฆtninger, sรฅsom et mock-arkiv eller en in-memory-kontekst.
- [KlasseInitialisere] / [KlasseOprydning] โ kรธres รฉn gang for hele klassen. De er nyttige, nรฅr opsรฆtningen er dyr, for eksempel ved oprettelse af en testdatabase.
- [DataRow] og [DataTestMethod] โ levere parametriserede input, sรฅ en enkelt testmetode dรฆkker flere tilfรฆlde.
Inden for hver testmetode kontrollerer Assert-klassen resultatet. Almindelige kald inkluderer Assert.AreEqual for vรฆrdisammenligninger, Assert.IsTrue og Assert.IsFalse for boolske vรฆrdier, Assert.IsNull og Assert.IsNotNull for referencer og Assert.ThrowsException for forventede undtagelser. Strukturer hver test ved hjรฆlp af Arrange-, Act- og Assert-mรธnsteret, sรฅ opsรฆtning, kald og verifikation forbliver visuelt adskilt. Dette layout gรธr det nemt at fejlfinde fejlende tests, fordi den fejlende linje nรฆsten altid er den eneste Assert i bunden.
MSTest, NUnit og xUnit sammenlignet for ASP.NET
Tre testframeworks dominerer .NET-รธkosystemet. Hvert framework kรธrer i Visual Studio og integreres med dotnet-test, sรฅ forskellen ligger primรฆrt i stil, fรฆllesskabsstรธtte og standardadfรฆrd.
- MSTest โ sendt af Microsoft og leveres forudinstalleret med Visual Studio Unit Test Project-skabelonen, der blev brugt tidligere i denne vejledning. Det er den sikreste standard, nรฅr et team er nyt inden for enhedstestning pรฅ Microsoft stak.
- NUnit โ den รฆldste af de tre, oprindeligt porteret fra JUnitDen tilbyder en omfattende begrรฆnsningsmodel, parametriserede tests via TestCase og TestCaseSource og moden understรธttelse pรฅ tvรฆrs af alle .NET-versioner.
- xUnit.net โ bruges internt af ASP.NET Core- og Entity Framework Core-teams. Den erstatter SetUp-metoden med constructor og IDisposable, opfordrer til รฉn testklasse pr. adfรฆrd og bruger [Fact] og [Theory] i stedet for [TestMethod].
Alle tre frameworks opdager tests via attributter, kรธrer via dotnet test-kommandoen og producerer trx- eller xUnit XML-rapporter, som CI-pipelines som f.eks. Azure DevOps, GitHub-handlinger og Jenkins kan forbruge direkte. For et fรธrste ASP.NET-projekt holder det vรฆrktรธjskรฆden enkel, hvis man holder sig til MSTest. Teams, der รธnsker mere omfattende parametrisering eller allerede bruger ASP.NET Core, vรฆlger ofte xUnit for at sikre konsistens med det framework, det blev bygget med.
Bedste fremgangsmรฅder til enhedstestning af ASP.NET-applikationer
At fรธlge et lille sรฆt vaner holder en suite hurtig, pรฅlidelig og nyttig i lรธbet af et ASP.NET-projekts levetid.
- Test รฉn adfรฆrd pr. metode. En test, der pรฅstรฅr flere uafhรฆngige ting, fejler af mange รฅrsager og tager lรฆngere tid at rette.
- Navngiv tests efter hensigt. Et mรธnster som MethodUnderTest_Scenario_ExpectedResult gรธr Test Explorer-outputtet til en lรฆsbar specifikation af klassen.
- Isoler enheden fra eksterne systemer. Indpak fil-, netvรฆrks- og databasekald bag grรฆnseflader og byt ind med forfalskninger eller mock-funktioner, sรฅ testen ikke rammer den reelle afhรฆngighed.
- Hold testene hurtige. Sigt efter at hele enhedspakken skal vรฆre fรฆrdig pรฅ fรฅ sekunder. Langsomme tests springes over, og oversprungne tests skjuler regressioner.
- Fรธlg layoutet "Arranger, Handl, hรฆvd". Tre korte blokke med blanke linjer imellem signalerer hensigt og gรธr det nemt at fรฅ รธje pรฅ fejlende linjer.
- Kรธr tests pรฅ hver commit. Kable dotnet-test til en CI-pipeline, sรฅ en defekt test blokerer sammenfรธjningen i stedet for afsendelsenping til produktion.
- Track-kodedรฆkning, men jagt den ikke. Dรฆkningen fremhรฆver uafprรธvede stier, men et hรธjt antal alene garanterer ikke kvalitet. RevSe hvad de manglende linjer rent faktisk gรธr.
Anvendt sammen forvandler disse fremgangsmรฅder det ovenfor bygget DemoTest-projekt til kimen til en suite, der fanger regressioner ved hvert push, dokumenterer adfรฆrd for fremtidige udviklere og giver tryghed ved refaktorering af en ASP.NET-applikation.


















