EGYSÉGTESZTELÉS az Asp.Netben: Teljes oktatóanyag
⚡ Okos összefoglaló
Egy ASP.NET alkalmazás egységtesztelése a Visual Studio-ban egy egységteszt projekttel kezdődik, amely egy hivatkozást csatol a célprojekthez, hozzáadja az MSTest [TestClass] és [TestMethod] attribútumokat, majd meghívja az Assert metódusokat annak bizonyítására, hogy az osztályok a terveknek megfelelően viselkednek.
A tesztelés minden programozási nyelv alapvető eleme. Tesztelés ASP.NET alkalmazásokhoz a Visual Studio segítségével lehetséges.
A Visual Studio tesztkód létrehozására szolgál. Emellett ASP.NET alkalmazások tesztkódjának futtatására is használható. Ily módon egyszerűvé válik az ASP.NET alkalmazások hibáinak ellenőrzése. A Visual Studio tesztelési modulja egy beépített funkcióval rendelkezik. Azonnal elvégezhető egy teszt egy ASP.NET projekthez.
Bevezetés az ASP.NET tesztelésébe
Az ASP.NET projektek tesztelésének első szintje az egység szintű tesztelés. Ez a teszt egy alkalmazás működését vizsgálja. A tesztelés célja annak biztosítása, hogy az alkalmazás a várt módon viselkedjen. Az ASP.NET-ben az első feladat egy tesztprojekt létrehozása a Visual Studio-ban. A tesztprojekt tartalmazza az alkalmazás teszteléséhez szükséges kódot.
Vegyük figyelembe az alábbi weboldalt. Az oldalon a következő üzenet található: „Guru99 – ASP.NET” hibaüzenet jelenik meg. Hogyan ellenőrizhetjük, hogy a megfelelő üzenet jelenik-e meg egy ASP.NET projekt futtatásakor? Ezt úgy tehetjük meg, hogy egy tesztprojektet adunk az ASP.NET megoldáshoz (amelyet webes alkalmazások fejlesztésére használnak). Ez a tesztprojekt biztosítja, hogy a megfelelő üzenet jelenjen meg a felhasználónak.
Nézzük meg most részletesebben, hogyan tudunk teszteléssel foglalkozni ASP.NET-ben.
NET Unit Testing Project létrehozása
Mielőtt tesztprojektet hoznánk létre, végre kell hajtanunk az alábbi magas szintű lépéseket.
- Használja a korábbi szakaszokban használt „DemoAplikációnkat”. Ez lesz az alkalmazásunk, amelyet tesztelnünk kell.
- Hozzáadunk egy új osztályt a DemoApplication-hoz. Ez az osztály egy ' nevű karakterláncot fog tartalmazni.Guru99 – ASP.NET.' Ezt a karakterláncot a tesztelési projektünkben fogjuk tesztelni.
- Végül létrehozunk egy tesztelési projektet. Ezt az ASP.NET alkalmazás tesztelésére használjuk.
Kövessük tehát a fenti magas szintű lépéseket, és nézzük meg, hogyan valósíthatjuk meg a tesztelést.
Step 1) Győződjön meg arról, hogy a DemoApplication meg van nyitva a Visual Studióban.
Step 2) Most adjunk hozzá egy új osztályt a DemoApplication-hoz. Ez az osztály egy ' nevű karakterláncot fog tartalmazni.Guru99 – ASP.NET.' Ezt a karakterláncot a tesztelési projektünkben fogjuk tesztelni.
Kövesse az alábbi lépést új osztály hozzáadásához.
- A Visual Studio programban kattintson a jobb gombbal a „DemoApplication” elemre a Solution Explorerben.
- Válassza a Hozzáadás->Osztály lehetőséget a helyi menüből.
Step 3) Ebben a lépésben a
- Adjon nevet „Tutorial.cs” az új osztálynak.
- Kattintson a 'Hozzáadás' gombra, hogy hozzáadja a fájlt a DemoApplication-hez.
Most egy új osztály került hozzáadásra a „DemoApplication” fájlhoz.
Step 4) Nyissa meg az új Tutorial.cs fájlt a „DemoApplication” mappából. Adja hozzá a következő karakterláncot: „Guru99 – ASP.NET.”
A fájl megnyitásához kattintson duplán a Tutorial.cs fájlra a Solution Explorerben.
A fájlnak már lesz valami alapértelmezett kódja. Ne törődj ezzel a kóddal, csak add hozzá az alábbi kódsort.
namespace DemoApplication { public class Tutorial { public String Name; public Tutorial() { Name = "Guru99 - ASP.Net"; } } }
Code Magyarázat:-
- A Name változó karakterlánc típusú.
- Végül a Tutorial osztály konstruktorában adjuk meg a Name változó értékét. Az érték a következőhöz lesz rendelve: „Guru99 – ASP.NET”
Step 5) Most menj a demo.aspx fájlba, és add hozzá a következő kódsorokat a szöveg megjelenítéséhez: „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 Magyarázat:-
- Az első sor létrehoz egy 'Tutorial' osztályú objektumot. Ez az első lépés az osztályokkal és objektumokkal való munka során. Az objektumnak adott név 'tp'.
- Végül meghívjuk a 'tutorial.cs'-t a demo.aspx fájlból. Megjeleníti a Név változó értékét.
Amikor a fenti programot a Visual Studio-ban futtatja, a következő kimenetet kapja.
Kimenet:-
A kimeneten a következő üzenetet látod: „Guru99 – ASP.NET” üzenet jelenik meg.
Step 6) Most adjuk hozzá a tesztprojektünket a demó alkalmazáshoz. Ezt a Visual Studio segítségével tehetjük meg.
- Kattintson a jobb gombbal a Megoldás – DemoApplication elemre.
- A helyi menüben válassza az „Új projekt” lehetőséget.
Step 7) A lépés magában foglalja a Unit Test projekt hozzáadását a bemutató alkalmazáshoz.
- A bal oldali panelen kattintson az elemtípusra, mint "Teszt".
- A párbeszédpanel középső részén megjelenő listából válassza ki a „Unit Test Project” elemet.
- Adjon nevet a tesztprojektnek. Esetünkben a megadott név 'DemoTest'.
- Végül kattintson az „OK” gombra.
Végül látni fogja, hogy a DemoTest projekt hozzáadódik a megoldásböngészőhöz. Ezzel más fájlokat is láthat, mint például a UnitTest1.cs, a tulajdonságok stb. alapértelmezés szerint jönnek létre.
A tesztprojekt futtatása
Az előző szakaszban létrehozott tesztprojektet az ASP.NET alkalmazásunk tesztelésére használjuk. A következő lépésekben a tesztprojekt futtatását fogjuk látni.
- Az első lépés egy ASP.NET projektre mutató hivatkozás hozzáadása lenne. Ezt a lépést azért hajtják végre, hogy a tesztprojekt hozzáférjen az ASP.NET projekthez.
- Ezután megírjuk a tesztkódunkat.
- Végül a tesztet a Visual Studio segítségével futtatjuk.
Step 1) Demóalkalmazásunk teszteléséhez az első tesztprojektnek hivatkoznia kell a bemutatóalkalmazásra. Adjon hozzá hivatkozást a Demo.aspx megoldásra.
- Kattintson a jobb gombbal a Demo Test projektre
- A menüből válassza az Add->Reference opciót.
Step 2) A következő lépés egy hivatkozás hozzáadása a DemoApplication-hez.
- Válassza a Projektek lehetőséget a párbeszédpanel bal oldalán
- Kattintson a DemoApplication melletti jelölőnégyzetre
- Kattintson az 'OK' gombra.
Ez lehetővé teszi, hogy egy demoteszt-projekt tesztelje a DemoApplication-ünket.
Step 3) Most itt az ideje, hogy hozzáadjuk a tesztkódot a tesztprojektünkhöz.
- Ehhez először kattintson duplán az UnitTest1 fájlra (az UnitTest1 fájlt a Visual Studio automatikusan hozzáadja a tesztprojekt létrehozásakor) a Solution Explorerben.
- Ez a fájl lesz futtatva az ASP.NET projekt teszteléséhez.
Látni fogja a Visual Studio által hozzáadott alábbi kódot a UnitTest1.cs fájlban. Ez a tesztprojekt futtatásához szükséges alapkód.
Step 4) A következő lépés a „” karakterlánc teszteléséhez használt kód hozzáadása.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"); } } }
- Hozzon létre egy új „tp” nevű objektumot, amelynek típusa Tutorial
- Az Assert.AreEqual metódust a .NET-ben arra használják, hogy egy érték egyenlő-e valamivel. Tehát a mi esetünkben a tp.Name értékeit hasonlítjuk össze a következővel: Guru99 – ASP.NET.
Step 5) Most futtassuk le a tesztprojektünket. Ehhez menjünk a Teszt->Futtatás->Összes teszt menüpontra.
Kimenet:-
Megjelenik egy teszt Explorer ablak a Visual Studióban. Ez megjeleníti a fenti eredményt, és megjeleníti, hogy sikeres tesztet futtattak a Visual Studióban.
MSTest attribútumok és állítások, amelyeket használni fogsz
Az MicrosoftA .VisualStudio.TestTools.UnitTesting névtér egy kis attribútum- és állításkészletet tartalmaz, amely a legtöbb ASP.NET egységtesztet lefedi. Ezek első megismerése minden későbbi tesztet könnyebben olvashatóvá és karbantarthatóvá tesz.
- [Tesztosztály] – tesztek tárolójaként jelöli meg az osztályt. Az MSTest a felfedezéskor átvizsgálja az ezzel az attribútummal rendelkező osztályokat.
- [Tesztelési módszer] – egy nyilvános, paraméter nélküli metódust jelöl egyedi tesztként. A metódus void, Task vagy ValueTask értéket ad vissza.
- [TesztInicializálás] / [TesztTisztítás] – minden tesztelési metódus előtt és után futtassa őket. Használja őket megosztott beállítások, például mock repository vagy memórián belüli kontextus létrehozására és eltávolítására.
- [OsztályInicializálás] / [OsztályTisztítás] – egyszer futnak az egész osztályon. Hasznosak, ha a beállítás költséges, például egy tesztadatbázis seedelésénél.
- [Adatsor] és [Adattesztelési módszer] – paraméterezett bemeneteket biztosít, így egyetlen vizsgálati módszer több esetet is lefed.
Minden tesztelési metóduson belül az Assert osztály ellenőrzi az eredményt. A gyakori hívások közé tartozik az Assert.AreEqual az értékek összehasonlításához, az Assert.IsTrue és az Assert.IsFalse a logikai értékekhez, az Assert.IsNull és az Assert.IsNotNull a referenciákhoz, valamint az Assert.ThrowsException a várható kivételekhez. Minden tesztet az Arrange, Act, Assert minta használatával strukturálj, így a beállítás, a hívás és az ellenőrzés vizuálisan elkülönül. Ez az elrendezés megkönnyíti a sikertelen tesztek hibakeresését, mivel a hibás sor szinte mindig az alsó egyetlen Assert.
MSTest, NUnit és xUnit összehasonlítása ASP.NET-en
Három tesztelési keretrendszer uralja a .NET ökoszisztémát. Mindegyik a Visual Studio-n belül fut, és integrálódik a dotnet testtel, így a különbség főként a stílusban, a közösségi támogatásban és az alapértelmezett viselkedésben rejlik.
- MSTeszt – szállította Microsoft és előre telepítve tartalmazza a Visual Studio Unit Test Project sablont, amelyet a bemutató korábbi részében használtunk. Ez a legbiztonságosabb alapértelmezett beállítás, ha egy csapat új az egységtesztelésben a Microsoft Kazal.
- NUnit – a három közül a legrégebbi, eredetileg innen portolták JUnitGazdag korlátozó modellt, paraméterezett teszteket kínál TestCase és TestCaseSource segítségével, valamint kiforrott támogatást minden .NET verzióban.
- xUnit.net – az ASP.NET Core és az Entity Framework Core csapatai belsőleg használják. A SetUp metódust konstruktorral és IDisposable-lel helyettesíti, viselkedésenként egy tesztosztályt javasol, és a [TestMethod] helyett a [Fact] és [Theory] metódusokat használja.
Mindhárom keretrendszer attribútumokon keresztül deríti fel a teszteket, lefuttatja a dotnet test parancsot, és trx vagy xUnit XML jelentéseket készít, amelyeket a CI-folyamatok, mint például Azure DevOps, GitHub Actions és Jenkins közvetlenül felhasználható. Egy első ASP.NET projektnél az MSTest használata egyszerűvé teszi az eszköztárat. Azok a csapatok, amelyek gazdagabb paraméterezést szeretnének, vagy már használják az ASP.NET Core-t, gyakran az xUnit-ot választják, hogy az konzisztens legyen azzal a keretrendszerrel, amellyel építették.
Az ASP.NET alkalmazások egységtesztelésének ajánlott gyakorlatai
Néhány szokás betartása gyorsá, megbízhatóvá és hasznossá teszi a csomagokat egy ASP.NET projekt teljes élettartama alatt.
- Módszerenként egy viselkedést teszteljen. Egy teszt, amely több, egymással össze nem függő dolgot állít, számos okból kifolyólag kudarcot vall, és a javítása hosszabb időt vesz igénybe.
- A teszteket a szándék szerint nevezd el. Egy olyan minta, mint a MethodUnderTest_Scenario_ExpectedResult, a Tesztböngésző kimenetét az osztály olvasható specifikációjának adja ki.
- Válassza le a készüléket a külső rendszerektől. A fájl-, hálózati és adatbázis-hívásokat interfészek mögé kell csomagolni, és hamis vagy álhíreket kell becserélni, hogy a teszt ne találja el a valódi függőséget.
- Tartsd a teszteket gyorsnak. Törekedj arra, hogy a teljes modulcsomag másodpercek alatt elkészüljön. A lassú tesztek kimaradnak, a kihagyott tesztek pedig elrejtik a regressziókat.
- Kövesd az Elrendezés, Cselekedj, Állítás elrendezést. Három rövid, üres sorokkal elválasztott blokk jelzi a szándékot, és megkönnyíti a hibás sorok észrevételét.
- Futtasson teszteket minden commit után. Kösd be a dotnet tesztet egy CI-folyamatba, hogy egy hibás teszt a küldés helyett blokkolja az egyesítéstping a termeléshez.
- Track kód lefedettség, de ne üldözd. A lefedettség kiemeli a nem tesztelt útvonalakat, de a magas szám önmagában nem garantálja a minőséget. RevNézd meg, mit csinálnak valójában a hiányzó vonalak.
Együttesen alkalmazva ezek a gyakorlatok a fent felépített DemoTest projektet egy olyan csomag magjává alakítják, amely minden egyes push-nál regressziókat észlel, dokumentálja a viselkedést a jövőbeli fejlesztők számára, és magabiztosságot ad egy ASP.NET alkalmazás refaktorálásakor.


















