EENHEID TESTEN in Asp.Net: volledige zelfstudie
โก Slimme samenvatting
Unit testen van een ASP.NET-applicatie in Visual Studio begint met een Unit Test Project, legt een verwijzing naar het doelproject, voegt MSTest [TestClass] en [TestMethod] attributen toe en roept Assert-methoden aan om te bewijzen dat klassen zich gedragen zoals bedoeld.
Testen is een essentieel aspect van elke programmeertaal. Testen Voor ASP.NET-applicaties is dit mogelijk met behulp van Visual Studio.
Visual Studio wordt gebruikt om testcode te maken. Het wordt ook gebruikt om de testcode voor een ASP.NET-applicatie uit te voeren. Op deze manier wordt het eenvoudig om fouten in een ASP.NET-applicatie op te sporen. De testmodule in Visual Studio biedt standaardfunctionaliteit. Je kunt direct een test uitvoeren voor een ASP.NET-project.
Inleiding tot testen voor ASP.NET
Het eerste niveau van testen van een ASP.NET-project is unit-testen. Deze testen controleren de functionaliteit van een applicatie. De testen worden uitgevoerd om ervoor te zorgen dat de applicatie zich gedraagt โโzoals verwacht. In ASP.NET is de eerste stap het maken van een testproject in Visual Studio. Dit testproject bevat de benodigde code om de applicatie te testen.
Laten we de onderstaande webpagina eens bekijken. Op de pagina staat de volgende boodschap:Guru99 โ ASP.NETโ wordt weergegeven. Hoe kunnen we nu bevestigen dat het juiste bericht wordt weergegeven wanneer een ASP.NET-project wordt uitgevoerd? Dit doen we door een testproject toe te voegen aan de ASP.NET-oplossing (die wordt gebruikt voor het ontwikkelen van webapplicaties). Dit testproject zorgt ervoor dat het juiste bericht aan de gebruiker wordt getoond.
Laten we nu eens dieper ingaan op de mogelijkheden van testen in ASP.NET.
Een .NET Unit Testing-project maken
Voordat we een testproject maken, moeten we de onderstaande stappen op hoog niveau uitvoeren.
- Gebruik onze 'DemoApplicatie' die in de eerdere secties werd gebruikt. Dit wordt onze applicatie die getest moet worden.
- We voegen een nieuwe klasse toe aan de DemoApplication. Deze klasse bevat een string met de naam 'Guru99 โ ASP.NET.' Deze tekenreeks wordt getest in ons testproject.
- Tot slot maken we een testproject aan. Dit project wordt gebruikt om de ASP.NET-applicatie te testen.
Laten we daarom de bovenstaande stappen op hoog niveau volgen en kijken hoe we testen kunnen implementeren.
Stap 1) Zorg ervoor dat de DemoApplication geopend is in Visual Studio.
Stap 2) Laten we nu een nieuwe klasse toevoegen aan de DemoApplication. Deze klasse zal een tekenreeks bevatten met de naam 'Guru99 โ ASP.NET.' Deze tekenreeks wordt getest in ons testproject.
Volg onderstaande stap om een โโnieuwe klasse toe te voegen.
- Klik in Visual Studio met de rechtermuisknop op 'DemoApplication' in Solution Explorer.
- Kies de optie Toevoegen->Klasse in het contextmenu.
Stap 3) In deze stap,
- Geef een naam 'Tutorial.cs' voor de nieuwe klasse.
- Klik op de knop 'Toevoegen' om het bestand aan de demoapplicatie toe te voegen.
Nu is er een nieuwe klasse toegevoegd aan het bestand 'DemoApplication'.
Stap 4) Open het nieuwe bestand Tutorial.cs vanuit โDemoApplicationโ. Voeg de volgende tekst toe:Guru99 โ ASP.NET.โ
Om het bestand te openen, dubbelklikt u op het bestand Tutorial.cs in Solution Explorer.
In het bestand is al een standaardcode geschreven. Maak je geen zorgen over die code, voeg gewoon de onderstaande regel code toe.
namespace DemoApplication { public class Tutorial { public String Name; public Tutorial() { Name = "Guru99 - ASP.Net"; } } }
Code Uitleg:-
- De variabele Naam is van het type string.
- Tot slot, in de constructor van de Tutorial-klasse, wijs je de waarde toe aan de variabele Name. De waarde wordt toegewezen aan "Guru99 โ ASP.NETโ
Stap 5) Ga nu naar het bestand demo.aspx en voeg de volgende regels code toe om de tekst " weer te geven" te creรซren.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 Uitleg:-
- De eerste regel creรซert een object van de klasse 'Tutorial'. Dit is de eerste stap bij het werken met klassen en objecten. De naam die aan het object wordt gegeven is 'tp'.
- Ten slotte roepen we 'tutorial.cs' aan vanuit het demo.aspx-bestand. Het toont de waarde van de naamvariabele.
Wanneer u het bovenstaande programma in Visual Studio uitvoert, krijgt u de volgende uitvoer.
Uitgang: -
Uit de uitvoer blijkt het bericht "Guru99 โ ASP.NETโ weergegeven.
Stap 6) Laten we nu ons testproject toevoegen aan de demo-applicatie. Dit doen we met behulp van Visual Studio.
- Klik met de rechtermuisknop op de oplossing โ Demotoepassing.
- Kies in het contextmenu de optie 'Nieuw project'.
Stap 7) De stap omvat de toevoeging van het Unit Test-project aan de demo-applicatie.
- Klik op het itemtype als 'Test' in het linkerpaneel.
- Selecteer het item 'Unit Test Project' uit de lijst die in het midden van het dialoogvenster wordt weergegeven.
- Geef een naam voor het testproject. In ons geval is de opgegeven naam 'DemoTest'.
- Klik ten slotte op de knop 'OK'.
Uiteindelijk zult u zien dat het DemoTest-project wordt toegevoegd aan de oplossingsverkenner. Hiermee kunt u ook zien dat andere bestanden zoals UnitTest1.cs, eigenschappen, enz. standaard worden gegenereerd.
Het uitvoeren van het testproject
Het testproject dat in de vorige sectie is gemaakt, wordt gebruikt om onze ASP.NET-applicatie te testen. In de volgende stappen zullen we zien hoe we het testproject kunnen uitvoeren.
- De eerste stap is het toevoegen van een verwijzing naar het ASP.NET-project. Deze stap zorgt ervoor dat het testproject toegang heeft tot het ASP.NET-project.
- Vervolgens schrijven we onze testcode.
- Tot slot voeren we de test uit met Visual Studio.
Stap 1) Om onze demo-applicatie te testen, moet het eerste testproject verwijzen naar de demo-applicatie. Voeg een verwijzing toe naar de Demo.aspx-oplossing.
- Klik met de rechtermuisknop op het Demo Test-project
- Kies in het menu de optie Toevoegen->Referentie.
Stap 2) De volgende stap is het toevoegen van een verwijzing naar de DemoApplication.
- Selecteer de optie Projecten aan de linkerkant van het dialoogvenster
- Klik op het selectievakje naast DemoApplication
- Klik op de knop 'OK'.
Hierdoor kan een demotestproject onze demoapplicatie testen.
Stap 3) Nu is het tijd om de testcode aan ons testproject toe te voegen.
- Dubbelklik hiervoor eerst op het bestand UnitTest1 (het bestand UnitTest1 wordt automatisch toegevoegd door Visual Studio wanneer het testproject wordt gemaakt) in Solution Explorer.
- Dit is het bestand dat wordt uitgevoerd om het ASP.NET-project te testen.
U ziet de onderstaande code toegevoegd door Visual Studio in het bestand UnitTest1.cs. Dit is de basiscode die nodig is om het testproject uit te voeren.
Stap 4) De volgende stap is het toevoegen van de code die wordt gebruikt om de tekenreeks te testen.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"); } } }
- Maak een nieuw object met de naam 'tp' van het type Tutorial
- De Assert.AreEqual-methode wordt in .NET gebruikt om te testen of een waarde gelijk is aan iets. In ons geval vergelijken we dus de waarden van tp.Name met Guru99 โ ASP.NET.
Stap 5) Laten we nu ons testproject uitvoeren. Hiervoor moeten we naar de menuoptie Test->Uitvoeren->Alle tests gaan.
Uitgang: -
Er verschijnt een test Explorer-venster in Visual Studio. Dit toont het bovenstaande resultaat en geeft aan dat er een succesvolle test is uitgevoerd in Visual Studio.
MSTest-attributen en -assertions die u zult gebruiken
De MicrosoftDe namespace .VisualStudio.TestTools.UnitTesting bevat een kleine set attributen en beweringen die de meeste ASP.NET-unit tests dekken. Door deze eerst te leren, worden alle latere tests gemakkelijker te lezen en te onderhouden.
- [TestClass] โ markeert de klasse als een container voor tests. MSTest scant klassen met dit attribuut tijdens de ontdekking.
- [Testmethode] โ markeert een openbare methode zonder parameters als een individuele test. De methode retourneert void, Task of ValueTask.
- [TestInitialize] / [TestCleanup] โ Voer deze commando's uit vรณรณr en na elke testmethode. Gebruik ze om gedeelde omgevingen zoals een mock-repository of een in-memory context te creรซren en te verwijderen.
- [ClassInitialize] / [ClassCleanup] โ Voer dit eenmalig uit voor de hele klas. Ze zijn handig wanneer de installatie veel tijd in beslag neemt, bijvoorbeeld bij het vullen van een testdatabase.
- [DataRow] en [DataTestMethod] โ lever geparameteriseerde invoer zodat รฉรฉn testmethode meerdere gevallen dekt.
Binnen elke testmethode controleert de Assert-klasse de uitkomst. Veelvoorkomende aanroepen zijn Assert.AreEqual voor waardevergelijkingen, Assert.IsTrue en Assert.IsFalse voor booleaanse waarden, Assert.IsNull en Assert.IsNotNull voor referenties en Assert.ThrowsException voor verwachte uitzonderingen. Structureer elke test volgens het Arrange, Act, Assert-patroon, zodat de opzet, aanroep en verificatie visueel gescheiden blijven. Deze structuur maakt het debuggen van falende tests eenvoudig, omdat de foutieve regel bijna altijd de enkele Assert onderaan is.
MSTest, NUnit en xUnit vergeleken voor ASP.NET
Drie testframeworks domineren het .NET-ecosysteem. Ze draaien alle drie binnen Visual Studio en integreren met dotnet test, waardoor de verschillen voornamelijk zitten in stijl, communityondersteuning en standaardgedrag.
- MSTest โ verzonden door Microsoft en wordt geleverd met de vooraf geรฏnstalleerde Visual Studio Unit Test Project-sjabloon die eerder in deze handleiding is gebruikt. Dit is de veiligste standaardoptie wanneer een team nieuw is in unit-testen. Microsoft stack.
- NUn โ de oudste van de drie, oorspronkelijk overgezet vanuit JUnitHet biedt een uitgebreid constraintmodel, geparameteriseerde tests via TestCase en TestCaseSource, en volwaardige ondersteuning voor elke .NET-versie.
- xUnit.net โ intern gebruikt door de ASP.NET Core- en Entity Framework Core-teams. Het vervangt de SetUp-methode door een constructor en IDisposable, stimuleert รฉรฉn testklasse per gedrag en gebruikt [Fact] en [Theory] in plaats van [TestMethod].
Alle drie de frameworks detecteren tests via attributen, voeren ze uit met het `dotnet test` commando en produceren `trx` of `xUnit` XML-rapporten die CI-pipelines zoals Azure DevOps, GitHub Actions en Jenkins kan direct worden gebruikt. Voor een eerste ASP.NET-project is het verstandig om bij MSTest te blijven, omdat de toolchain dan eenvoudig blijft. Teams die meer mogelijkheden voor parameterisering willen of al ASP.NET Core gebruiken, kiezen vaak voor xUnit vanwege de consistentie met het framework waarmee het is ontwikkeld.
Beste werkwijzen voor unit-testen van ASP.NET-applicaties
Door een paar vaste gewoontes te volgen, blijft een softwarepakket snel, betrouwbaar en bruikbaar gedurende de hele levensduur van een ASP.NET-project.
- Test รฉรฉn gedragspatroon per methode. Een test die meerdere ongerelateerde zaken beweert, faalt om vele redenen en het duurt langer om dit te herstellen.
- Benoem de tests op basis van het beoogde doel. Een patroon zoals MethodUnderTest_Scenario_ExpectedResult zorgt ervoor dat de uitvoer van Test Explorer een leesbare specificatie van de klasse weergeeft.
- Isoleer het apparaat van externe systemen. Plaats aanroepen naar bestanden, netwerken en databases achter interfaces en vervang deze door nep- of mock-objecten, zodat de test de werkelijke afhankelijkheid niet aanroept.
- Houd de tests snel. Streef ernaar dat de volledige testsuite binnen enkele seconden is afgerond. Langzame tests worden overgeslagen, en overgeslagen tests verbergen regressies.
- Volg de Arrange, Act, Assert-methode. Drie korte blokken met lege regels ertussen geven de bedoeling aan en maken foutieve regels gemakkelijk te herkennen.
- Voer tests uit bij elke commit. Integreer `dotnet test` in een CI-pipeline, zodat een defecte test de samenvoeging blokkeert in plaats van de implementatie.ping naar productie.
- Track code coverage, maar jaag het niet na. De dekkingsgraad brengt ongeteste paden aan het licht, maar een hoog aantal alleen garandeert geen kwaliteit. RevBekijk wat de ontbrekende regels precies doen.
Door deze werkwijzen te combineren, wordt het hierboven gebouwde DemoTest-project de basis voor een suite die regressies bij elke push detecteert, gedrag documenteert voor toekomstige ontwikkelaars en vertrouwen geeft bij het refactoren van een ASP.NET-applicatie.


















