ENHETSTESTING i Asp.Net: Komplett opplæring
⚡ Smart oppsummering
Enhetstesting av et ASP.NET-program i Visual Studio starter med et enhetstestprosjekt, kobler en referanse til målprosjektet, legger til MSTest [TestClass]- og [TestMethod]-attributter, og kaller Assert-metoder for å bevise at klasser oppfører seg som designet.
Testing er et viktig aspekt ved ethvert programmeringsspråk. Testing for ASP.NET-applikasjoner er mulig ved hjelp av Visual Studio.
Visual Studio brukes til å lage testkode. Det brukes også til å kjøre testkoden for et ASP.NET-program. På denne måten blir det enkelt å sjekke for eventuelle feil i et ASP.NET-program. I Visual Studio kommer testmodulen med en ferdig funksjonalitet. Man kan umiddelbart utføre en test for et ASP.NET-prosjekt.
Introduksjon til testing for ASP.NET
Det første nivået av testing av et ASP.NET-prosjekt er testing på enhetsnivå. Denne testen er funksjonaliteten til et program. Testingen utføres for å sikre at programmet oppfører seg som forventet. I ASP.NET er den første oppgaven å opprette et testprosjekt i Visual Studio. Testprosjektet vil inneholde den nødvendige koden for å teste programmet.
La oss se på nettsiden nedenfor. På siden har vi meldingen «Guru99 – ASP.NET” vises. Hvordan kan vi nå bekrefte at riktig melding vises når et ASP.NET-prosjekt kjører? Dette gjøres ved å legge til et testprosjekt i ASP.NET-løsningen (brukes til å utvikle nettbaserte applikasjoner). Dette testprosjektet vil sikre at riktig melding vises til brukeren.
La oss se nærmere på dette nå, og se hvordan vi kan jobbe med testing i ASP.NET.
Opprette et .NET-enhetstestingsprosjekt
Før vi oppretter et testprosjekt, må vi utføre trinnene nedenfor på høyt nivå.
- Bruk vår "DemoApplication" brukt i de tidligere delene. Dette vil være vår applikasjon som må testes.
- Vi legger til en ny klasse i DemoApplication. Denne klassen vil inneholde en streng kalt 'Guru99 – ASP.NET.' Denne strengen vil bli testet i testprosjektet vårt.
- Til slutt skal vi opprette et testprosjekt. Dette brukes til å teste ASP.NET-applikasjonen.
Så la oss følge de ovennevnte trinnene på overordnet nivå og se hvordan vi implementerer testing.
Trinn 1) Sørg for at DemoApplication er åpen i Visual Studio.
Trinn 2) La oss nå legge til en ny klasse i DemoApplication. Denne klassen vil inneholde en streng kalt 'Guru99 – ASP.NET.' Denne strengen vil bli testet i testprosjektet vårt.
Følg trinnene nedenfor for å legge til en ny klasse.
- I Visual Studio, høyreklikk 'DemoApplication' i Solution Explorer.
- Velg alternativet Legg til->Klasse fra hurtigmenyen.
Trinn 3) I dette trinnet
- Gi et navn "Tutorial.cs" for den nye klassen.
- Klikk på 'Legg til'-knappen for å legge til filen i DemoApplication.
Nå legges en ny klasse til filen "DemoApplication."
Trinn 4) Åpne den nye Tutorial.cs-filen fra «DemoApplication». Legg til strengen «Guru99 – ASP.NET.
For å åpne filen, dobbeltklikk på Tutorial.cs-filen i Solution Explorer.
Filen vil ha en standardkode allerede skrevet. Ikke bry deg om den koden, bare legg til kodelinjen nedenfor.
namespace DemoApplication { public class Tutorial { public String Name; public Tutorial() { Name = "Guru99 - ASP.Net"; } } }
Code Forklaring:-
- Navnvariabelen er av typen streng.
- Til slutt, i konstruktøren av Tutorial-klassen, tilordner du verdien til Navn-variabelen. Verdien tilordnes til «Guru99 – ASP.NET
Trinn 5) Gå nå til demo.aspx-filen og legg til kodelinjene for å 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 linjen oppretter et objekt av klassen «Opplæring». Dette er det første trinnet når man arbeider med klasser og objekter. Navnet som gis til objektet er «tp».
- Til slutt kaller vi 'tutorial.cs' fra demo.aspx-filen. Den viser verdien til Name-variabelen.
Når du kjører programmet ovenfor i Visual Studio, vil du få følgende utgang.
Produksjon:-
Fra utdataene ser du meldingen «Guru99 – ASP.NET” vises.
Trinn 6) La oss nå legge til testprosjektet vårt i demoapplikasjonen. Dette gjøres ved hjelp av Visual Studio.
- Høyreklikk på Solution – DemoApplication.
- I kontekstmenyen velger du alternativet 'Nytt prosjekt'.
Trinn 7) Trinnet innebærer tillegg av Unit Test-prosjektet til demoapplikasjonen.
- Klikk på elementtype som "Test" fra panelet til venstre.
- Velg elementet som 'Unit Test Project' fra listen, som vises i den midtre delen av dialogboksen.
- Gi et navn på testprosjektet. I vårt tilfelle er navnet gitt 'DemoTest'.
- Til slutt klikker du på 'OK'-knappen.
Du vil etter hvert se DemoTest-prosjektet lagt til i løsningsutforskeren. Med dette kan du også se andre filer som UnitTest1.cs, egenskaper, etc. genereres som standard.
Kjører testprosjektet
Testprosjektet som ble opprettet i den tidligere delen brukes til å teste ASP.NET-applikasjonen vår. I de følgende trinnene skal vi se hvordan du kjører testprosjektet.
- Det første trinnet ville være å legge til en referanse til ASP.NET-prosjektet. Dette trinnet utføres slik at testprosjektet har tilgang til ASP.NET-prosjektet.
- Deretter skriver vi testkoden vår.
- Til slutt vil vi kjøre testen ved hjelp av Visual Studio.
Trinn 1) For å teste vår demoapplikasjon, må det første testprosjektet referere til demoapplikasjonen. Legg til en referanse til Demo.aspx-løsningen.
- Høyreklikk på Demo Test-prosjektet
- Velg alternativet Legg til->Referanse fra menyen.
Trinn 2) Det neste trinnet er å legge til en referanse til DemoApplication.
- Velg alternativet Prosjekter fra venstre side av dialogboksen
- Klikk på avmerkingsboksen ved siden av DemoApplication
- Klikk på 'OK'-knappen.
Dette vil tillate et demotest-prosjekt for å teste vår Demo-applikasjon.
Trinn 3) Nå er det på tide å legge til testkoden i testprosjektet vårt.
- For dette første dobbeltklikk på UnitTest1-filen (UnitTest1-filen legges automatisk til av Visual Studio når testprosjektet opprettes) i Solution Explorer.
- Dette er filen som skal kjøres for å teste ASP.NET-prosjektet.
Du vil se koden nedenfor lagt til av Visual Studio i UnitTest1.cs-filen. Dette er den grunnleggende koden som trengs for at testprosjektet skal kjøre.
Trinn 4) Neste trinn er å legge til koden som brukes til å 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"); } } }
- Lag et nytt objekt kalt 'tp' av typen Tutorial
- Assert.AreEqual-metoden brukes i .NET for å teste om en verdi er lik noe. Så i vårt tilfelle sammenligner vi verdiene til tp.Name med Guru99 – ASP.NET.
Trinn 5) La oss nå kjøre testprosjektet vårt. For å gjøre dette må vi gå til menyvalget Test->Kjør->Alle tester.
Produksjon:-
Et testutforskervindu vises i Visual Studio. Dette vil vise resultatet ovenfor og vise at en vellykket test ble kjørt i Visual Studio.
MSTest-attributter og påstander du vil bruke
Ocuco MicrosoftNavnerommet .VisualStudio.TestTools.UnitTesting leverer et lite sett med attributter og deklarasjoner som dekker de fleste ASP.NET-enhetstester. Å lære disse først gjør det enklere å lese og vedlikeholde hver senere test.
- [Testklasse] – markerer klassen som en beholder med tester. MSTest skanner klasser med dette attributtet ved oppdagelsestidspunktet.
- [Testmetode] – markerer en offentlig, parameterløs metode som en individuell test. Metoden returnerer void, Task eller ValueTask.
- [TestInitialize] / [TestCleanup] – kjør før og etter hver testmetode. Bruk dem til å opprette og avvikle delt oppsett, for eksempel et simulert repository eller en kontekst i minnet.
- [KlasseInitialisere] / [KlasseOpprydding] – kjør én gang for hele klassen. De er nyttige når oppsettet er dyrt, for eksempel ved å sette opp en testdatabase.
- [DataRow] og [DataTestMethod] – levere parameteriserte innganger slik at én enkelt testmetode dekker flere tilfeller.
Inne i hver testmetode sjekker Assert-klassen resultatet. Vanlige kall inkluderer Assert.AreEqual for verdisammenligninger, Assert.IsTrue og Assert.IsFalse for boolske verdier, Assert.IsNull og Assert.IsNotNull for referanser, og Assert.ThrowsException for forventede unntak. Strukturer hver test ved hjelp av Arrange-, Act- og Assert-mønsteret, slik at oppsett, kall og verifisering forblir visuelt atskilt. Dette oppsettet gjør det enkelt å feilsøke mislykkede tester fordi den mislykkede linjen nesten alltid er den eneste Assert-en nederst.
MSTest, NUnit og xUnit sammenlignet for ASP.NET
Tre testrammeverk dominerer .NET-økosystemet. Hvert av dem kjører i Visual Studio og integreres med dotnet-testing, så forskjellen ligger hovedsakelig i stil, fellesskapsstøtte og standardoppførsel.
- MSTest – sendt av Microsoft og leveres forhåndsinstallert med Visual Studio Unit Test Project-malen som ble brukt tidligere i denne veiledningen. Det er den sikreste standarden når et team er nytt innen enhetstesting på Microsoft stable.
- NUnit – den eldste av de tre, opprinnelig portert fra JUnitDen tilbyr en rik begrensningsmodell, parameteriserte tester gjennom TestCase og TestCaseSource, og moden støtte på tvers av alle .NET-versjoner.
- xUnit.net – brukes internt av ASP.NET Core- og Entity Framework Core-teamene. Den erstatter SetUp-metoden med constructor og IDisposable, oppfordrer til én testklasse per oppførsel og bruker [Fact] og [Theory] i stedet for [TestMethod].
Alle tre rammeverkene oppdager tester gjennom attributter, kjører gjennom dotnet test-kommandoen og produserer trx- eller xUnit XML-rapporter som CI-pipelines som Azure DevOps, GitHub-handlinger og Jenkins kan konsumere direkte. For et første ASP.NET-prosjekt, vil det å holde seg til MSTest holde verktøykjeden enkel. Team som ønsker rikere parameterisering eller allerede bruker ASP.NET Core, velger ofte xUnit for konsistens med rammeverket det ble bygget med.
Beste praksis for enhetstesting av ASP.NET-applikasjoner
Å følge et lite sett med vaner holder en pakke rask, pålitelig og nyttig gjennom levetiden til et ASP.NET-prosjekt.
- Test én oppførsel per metode. En test som hevder flere urelaterte ting mislykkes av mange grunner og tar lengre tid å fikse.
- Navngi tester etter intensjon. Et mønster som MethodUnderTest_Scenario_ExpectedResult gjør Test Explorer-utdataene til en lesbar spesifikasjon av klassen.
- Isoler enheten fra eksterne systemer. Pakk fil-, nettverks- og databasekall bak grensesnitt og bytt inn forfalskninger eller simuleringer slik at testen ikke treffer den virkelige avhengigheten.
- Hold testene raske. Sikt mot at hele enhetspakken skal være ferdig på sekunder. Trege tester hoppes over, og tester som hoppes over skjuler regresjoner.
- Følg oppsettet «Organiser, handle, hevde». Tre korte blokker med blanke linjer mellom seg signaliserer intensjon og gjør det enkelt å få øye på sviktende linjer.
- Kjør tester på hver commit. Koble dotnet-testen til en CI-rørledning slik at en ødelagt test blokkerer sammenslåingen i stedet for å sende denping til produksjon.
- Track-kodedekning, men ikke jag den. Dekningen fremhever uprøvde stier, men et høyt tall alene garanterer ikke kvalitet. RevSe hva de manglende linjene egentlig gjør.
Når disse metodene brukes sammen, gjør de DemoTest-prosjektet som er bygget ovenfor, om til frøet til en pakke som fanger opp regresjoner ved hver push, dokumenterer atferd for fremtidige utviklere og gir trygghet ved refaktorering av en ASP.NET-applikasjon.


















