TESTIRANJE JEDINICE u Asp.Netu: Kompletan vodič
⚡ Pametni sažetak
Jedinično testiranje ASP.NET aplikacije u Visual Studiju započinje s Unit Test Projectom, povezuje referencu na ciljni projekt, dodaje MSTest atribute [TestClass] i [TestMethod] te poziva Assert metode kako bi se dokazalo da se klase ponašaju kako je dizajnirano.
Testiranje je bitan aspekt svakog programskog jezika. Ispitivanje za ASP.NET aplikacije je moguće uz pomoć Visual Studija.
Visual Studio se koristi za izradu testnog koda. Također se koristi za pokretanje testnog koda za ASP.NET aplikaciju. Na taj način postaje jednostavno provjeriti ima li pogrešaka u ASP.NET aplikaciji. U Visual Studiju, modul za testiranje dolazi s funkcionalnošću odmah po instalaciji. Moguće je odmah izvršiti test za ASP.NET projekt.
Uvod u testiranje za ASP.NET
Prva razina testiranja ASP.NET projekta je testiranje na razini jedinice. Ovo testiranje je funkcionalnost aplikacije. Testiranje se provodi kako bi se osiguralo da se aplikacija ponaša kako se očekuje. U ASP.NET-u, prvi zadatak je stvaranje testnog projekta u Visual Studiju. Testni projekt će sadržavati potreban kod za testiranje aplikacije.
Razmotrimo donju web stranicu. Na stranici imamo poruku „Guru99 – prikazuje se "ASP.NET". Kako sada možemo potvrditi da se ispravna poruka prikazuje kada se pokrene ASP.NET projekt? To se postiže dodavanjem testnog projekta ASP.NET rješenju (koristi se za razvoj web aplikacija). Ovaj testni projekt bi osigurao da se korisniku prikazuje ispravna poruka.
Pogledajmo sada detaljnije i vidimo kako možemo raditi na testiranju u ASP.NET-u.
Stvaranje .NET Unit Testing projekta
Prije nego što izradimo testni projekt, moramo izvršiti donje korake visoke razine.
- Koristite našu 'DemoAplikaciju' korištenu u prethodnim odjeljcima. Ovo će biti naša aplikacija koju treba testirati.
- Dodat ćemo novu klasu u DemoApplication. Ova klasa će sadržavati niz znakova 'Guru99 – ASP.NET.' Ovaj niz znakova bit će testiran u našem projektu testiranja.
- Na kraju ćemo izraditi testni projekt. Koristi se za testiranje ASP.NET aplikacije.
Dakle, slijedimo gore navedene korake na visokoj razini i vidimo kako implementirati testiranje.
Korak 1) Provjerite je li DemoApplication otvorena u Visual Studiju.
Korak 2) Dodajmo sada novu klasu u DemoApplication. Ova klasa će sadržavati niz znakova 'Guru99 – ASP.NET.' Ovaj niz znakova bit će testiran u našem projektu testiranja.
Slijedite korake u nastavku za dodavanje nove klase.
- U Visual Studiju desnom tipkom miša kliknite 'DemoApplication' u Solution Exploreru.
- Odaberite opciju Add->Class iz kontekstnog izbornika.
Korak 3) U ovom koraku
- Dajte naziv 'Tutorial.cs' novoj klasi.
- Pritisnite gumb "Dodaj" za dodavanje datoteke u DemoApplication.
Sada je nova klasa dodana datoteci “DemoApplication.”
Korak 4) Otvorite novu datoteku Tutorial.cs iz "DemoApplication". Dodajte niz "Guru99 – ASP.NET.”
Da biste otvorili datoteku, dvaput kliknite na datoteku Tutorial.cs u Solution Exploreru.
Datoteka će imati već napisan zadani kod. Nemojte se zamarati oko tog koda, samo dodajte donji redak koda.
namespace DemoApplication { public class Tutorial { public String Name; public Tutorial() { Name = "Guru99 - ASP.Net"; } } }
Code Obrazloženje:-
- Varijabla Name je tipa string.
- Konačno, u konstruktoru klase Tutorial, dodijelite vrijednost varijable Name. Vrijednost se dodjeljuje varijabli „Guru99 – ASP.NET”
Korak 5) Sada idite na datoteku demo.aspx i dodajte retke koda za prikaz teksta "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 Obrazloženje:-
- Prvi redak stvara objekt klase 'Tutorial'. Ovo je prvi korak pri radu s klasama i objektima. Naziv dodijeljen objektu je 'tp'.
- Na kraju pozivamo 'tutorial.cs' iz datoteke demo.aspx. Prikazuje vrijednost varijable Name.
Kada pokrenete gornji program u Visual Studiju, dobit ćete sljedeći izlaz.
Izlaz:-
Iz izlaza vidite poruku "Guru99 – prikazan je ASP.NET”.
Korak 6) Sada dodajmo naš testni projekt u Demo aplikaciju. To se radi uz pomoć Visual Studija.
- Desnom tipkom miša kliknite Rješenje – DemoApplication.
- U kontekstnom izborniku odaberite opciju 'Novi projekt'.
Korak 7) Korak uključuje dodavanje projekta Unit Test demo aplikaciji.
- Kliknite na vrstu stavke kao 'Test' na lijevoj ploči.
- Odaberite stavku kao 'Unit Test Project' s popisa koji se pojavljuje u središnjem dijelu dijaloškog okvira.
- Dajte naziv testnom projektu. U našem slučaju, dani naziv je 'DemoTest'.
- Na kraju kliknite gumb "OK".
Na kraju ćete vidjeti projekt DemoTest dodan u preglednik rješenja. S ovim također možete vidjeti da su druge datoteke poput UnitTest1.cs, svojstva itd. generirane prema zadanim postavkama.
Izvođenje testnog projekta
Testni projekt kreiran u prethodnom odjeljku koristi se za testiranje naše ASP.NET aplikacije. U sljedećim koracima vidjet ćemo kako pokrenuti testni projekt.
- Prvi korak bio bi dodavanje reference na ASP.NET projekt. Ovaj se korak provodi kako bi testni projekt imao pristup ASP.NET projektu.
- Zatim ćemo napisati naš testni kod.
- Na kraju ćemo pokrenuti test koristeći Visual Studio.
Korak 1) Da bismo testirali našu Demo aplikaciju, prvi testni projekt treba referencirati Demo aplikaciju. Dodajte referencu na rješenje Demo.aspx.
- Desnom tipkom miša kliknite projekt Demo Test
- Iz izbornika odaberite opciju Dodaj->Referenca.
Korak 2) Sljedeći korak je dodavanje reference na DemoApplication.
- Odaberite opciju Projekti s lijeve strane dijaloškog okvira
- Pritisnite potvrdni okvir pored DemoApplication
- Kliknite na gumb 'OK'.
To će omogućiti demotest projektu da testira našu DemoAplikaciju.
Korak 3) Sada je vrijeme da dodamo testni kod našem testnom projektu.
- Za ovaj prvi dvostruki klik na datoteku UnitTest1 (datoteku UnitTest1 automatski dodaje Visual Studio kada se izradi testni projekt) u Solution Exploreru.
- Ovo je datoteka koja će se pokrenuti za testiranje ASP.NET projekta.
Vidjet ćete donji kod koji je dodao Visual Studio u datoteci UnitTest1.cs. Ovo je osnovni kod potreban za pokretanje testnog projekta.
Korak 4) Sljedeći korak je dodavanje koda koji se koristi za testiranje niza znakova "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"); } } }
- Napravite novi objekt pod nazivom 'tp' tipa Tutorial
- Metoda Assert.AreEqual se koristi u .NET-u za provjeru je li vrijednost jednaka nečemu. Dakle, u našem slučaju uspoređujemo vrijednosti tp.Name s Guru99 – ASP.NET.
Korak 5) Sada pokrenimo naš testni projekt. Za to moramo otići na opciju izbornika Test->Pokreni->Svi testovi
Izlaz:-
U Visual Studiju pojavit će se testni prozor Explorera. Ovo će pokazati gornji rezultat i prikazati da je uspješan test pokrenut u Visual Studiju.
MSTest atributi i tvrdnje koje ćete koristiti
The MicrosoftImenski prostor .VisualStudio.TestTools.UnitTesting sadrži mali skup atributa i tvrdnji koji pokrivaju većinu ASP.NET jediničnih testova. Učenje ovih prvih čini svaki kasniji test lakšim za čitanje i održavanje.
- [TestnaKlasa] – označava klasu kao spremnik testova. MSTest skenira klase s ovim atributom u vrijeme otkrivanja.
- [Metoda ispitivanja] – označava javnu metodu bez parametara kao pojedinačni test. Metoda vraća void, Task ili ValueTask.
- [Inicijalizacija testa] / [Čišćenje testa] – pokreću se prije i poslije svake testne metode. Koristite ih za stvaranje i odlaganje dijeljenih postavki kao što je lažno spremište ili kontekst u memoriji.
- [Inicijalizacija klase] / [Čišćenje klase] – pokreću se jednom za cijeli razred. Korisni su kada je postavljanje skupo, na primjer za postavljanje testne baze podataka.
- [RedakPodataka] i [MetodaTestiranjaPodataka] – osigurati parametrizirane ulaze tako da jedna metoda ispitivanja pokriva nekoliko slučajeva.
Unutar svake metode testiranja, klasa Assert provjerava ishod. Uobičajeni pozivi uključuju Assert.AreEqual za usporedbe vrijednosti, Assert.IsTrue i Assert.IsFalse za logičke vrijednosti, Assert.IsNull i Assert.IsNotNull za reference te Assert.ThrowsException za očekivane iznimke. Strukturirajte svaki test pomoću uzorka Arrange, Act, Assert tako da postavljanje, pozivanje i provjera ostanu vizualno odvojeni. Ovaj raspored olakšava otklanjanje pogrešaka u testovima koji nisu uspjeli jer je redak koji označava neuspjeh gotovo uvijek jedina klasa Assert na dnu.
Usporedba MSTest-a, NUnit-a i xUnit-a za ASP.NET
Tri okvira za testiranje dominiraju .NET ekosustavom. Svaki od njih radi unutar Visual Studija i integrira se s dotnet testom, tako da je razlika uglavnom u stilu, podršci zajednice i zadanom ponašanju.
- MSTest – poslano od strane Microsoft i dolazi unaprijed instaliran s predloškom projekta za testiranje jedinice Visual Studio koji je ranije korišten u ovom vodiču. To je najsigurnija zadana vrijednost kada je tim nov u testiranju jedinice na Microsoft stog.
- NUjedinica – najstariji od tri, izvorno prenesen iz JUnitNudi bogat model ograničenja, parametrizirane testove putem TestCasea i TestCaseSourcea te zrelu podršku u svakoj .NET verziji.
- xUnit.net – interno ga koriste timovi ASP.NET Core i Entity Framework Core. Zamjenjuje metodu SetUp konstruktorom i IDisposableom, potiče jednu testnu klasu po ponašanju i koristi [Fact] i [Theory] umjesto [TestMethod].
Sva tri okvira otkrivaju testove putem atributa, pokreću se putem naredbe dotnet test i izrađuju trx ili xUnit XML izvješća koja CI cjevovodi poput Azure DevOps, GitHub akcije i Jenkins može se izravno koristiti. Za prvi ASP.NET projekt, korištenje MSTesta održava alatni lanac jednostavnim. Timovi koji žele bogatiju parametrizaciju ili već koriste ASP.NET Core često biraju xUnit zbog dosljednosti s okvirom s kojim je izgrađen.
Najbolje prakse za jedinično testiranje ASP.NET aplikacija
Slijeđenje malog skupa navika održava paket brzim, pouzdanim i korisnim tijekom životnog vijeka ASP.NET projekta.
- Testirajte jedno ponašanje po metodi. Test koji tvrdi nekoliko nepovezanih stvari ne uspijeva iz mnogo razloga i potrebno je više vremena da se popravi.
- Imenujte testove prema namjeri. Uzorak kao što je MethodUnderTest_Scenario_ExpectedResult pretvara izlaz Test Explorera u čitljivu specifikaciju klase.
- Izolirajte uređaj od vanjskih sustava. Zamotajte pozive datoteka, mreže i baze podataka iza sučelja i zamijenite lažnim ili mock verzijama kako test ne bi pogodio stvarnu ovisnost.
- Neka testovi budu brzi. Cilj je da cijeli paket jedinica bude završen za nekoliko sekundi. Spori testovi se preskaču, a preskočeni testovi skrivaju regresije.
- Slijedite raspored Rasporedi, Djeluj, Potvrdi. Tri kratka bloka s praznim crtama između njih signaliziraju namjeru i olakšavaju uočavanje grešaka u crtama.
- Pokreni testove na svakom commitu. Poveži dotnet test u CI cjevovod tako da neispravan test blokira spajanje umjesto slanjaping na proizvodnju.
- Tracpokrivenost k koda, ali nemojte ga juriti. Pokrivenost ističe neprovjerene puteve, ali sam veliki broj ne jamči kvalitetu. RevPogledajte što nedostajuće linije zapravo rade.
Primijenjene zajedno, ove prakse pretvaraju gore izgrađeni DemoTest projekt u sjeme paketa koji hvata regresije pri svakom push-u, dokumentira ponašanje za buduće programere i daje povjerenje prilikom refaktoriranja ASP.NET aplikacije.


















