Meer informatie over unit testing
1 Doel
Unit testen goed opzetten is een procedure met verschillende stappen. In dit proces wordt aan de hand van een stappenplan getoond hoe in C# met behulp van een testframework zoals NUnit getest kan worden.
2 Stappenplan
Splits het probleem in stappen, zoals:
- Kies een testframework
- Bedenk testscenario’s
- Schrijf de testmethode
- Voer de test uit en analyseer de resultaten
Tip
Focus je bij het opstellen van tests op methodes die berekeningen uitvoeren of logica bevatten. Begin met eenvoudige scenario’s voordat je overgaat op uitzonderingen.
Casus
Stel: een webshop laat klanten kortingscodes invoeren. Je hebt een methode
BerekenTotaalPrijs(mandje, kortingscode)
. Je wilt testen of deze methode het juiste bedrag teruggeeft, inclusief korting.
Input Verwachte output Mandje van €100, code “10%“ €90 Mandje van €50, geen code €50 Hiervoor schrijf je unit tests die de methode oproepen met bovenstaande input en controleren of het resultaat klopt.
2.1 Kies een testframework
Bepaal welk testframework je gebruikt:
- NUnit: Veel gebruikt in C#-projecten, uitgebreide mogelijkheden.
- xUnit: Populair in ASP.NET Core-projecten.
- MSTest: Standaard in Visual Studio, makkelijk te integreren.
Uitleg over de drie frameworks is benoemd in de uitleg over unit testing
Correctieve feedback tijdens de uitvoer
Let op of je projectreferentie naar het testframework correct is ingesteld. Als Visual Studio of Rider je testmethodes niet herkent, controleer dan de projectbestanden of packages.
Tip
- Gebruik een apart testproject om je tests in te zetten
- Zorg dat het testproject een referentie heeft naar het hoofdproject
- Voeg het juiste NuGet-package toe voor je testframework
2.2 Bedenk testscenario’s
Denk na over welke testscenario’s mogelijk zijn om te testen. Verder uitleg hierover is hier te vinden.
Correctieve feedback tijdens de uitvoer
Vermijd overlap tussen tests. Eén test moet één ding controleren. Als een test faalt, moet je snel kunnen achterhalen waarom.
Tip
- Gebruik tabellen om scenario’s overzichtelijk te maken, zoals waarheidstabellen
- Schrijf testcases op papier of in een bestand voordat je ze codeert.
- Geef je tests duidelijke namen zoals
Som_MetNegatieveGetallen_GeeftVerwachtResultaat
.
2.3 Schrijf de testmethode
Gebruik het Arrange–Act–Assert patroon:
- Arrange: Zet op wat je nodig hebt (bijv. objecten, input).
- Act: Roep de methode aan die je wilt testen.
- Assert: Controleer of de output overeenkomt met je verwachting.
Voorbeeld met NUnit
[Test]
public void Som_TweeGetallen_GeeftVerwachtResultaat() {
# Arrange
var calc = new Calculator();
# Act
var resultaat = calc.Som(2, 3);
# Assert
Assert.AreEqual(5, resultaat);
}
Correctieve feedback tijdens de uitvoer
Zorg ervoor dat je tests onafhankelijk van elkaar zijn. Eén test mag niet afhangen van de uitkomst van een andere test.
Tip
- Voeg meerdere
[TestCase]
of[InlineData]
regels toe voor variatie.- Gebruik duidelijke, beschrijvende testnamen.
- Hergebruik geen objecten als dat kan zorgen voor onverwachte bijwerkingen.
2.4 Voer de test uit en analyseer de resultaten
Run je tests in Visual Studio (via Test Explorer) of Rider. Bekijk:
- Welke tests zijn geslaagd en welke zijn gefaald?
- Analyseer waarom testen gefaald zijn en kijk naar de input en de foutmelding.
- Pas je methode of test aan als je een fout vindt.
Correctieve feedback tijdens de uitvoer
Let op: niet alle fouten zitten in de te testen methode – soms zit de fout in de test zelf (bijv. verkeerde verwachte waarde).
Tip
- Gebruik Test Explorer om snel fouten terug te vinden.
- Maak gebruik van breakpoints of logging in je tests voor debugging.
- Houd je testoutput schoon en begrijpelijk.
Volgende stap: Oefeningen unit testing