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:

  1. Kies een testframework
  2. Bedenk testscenario’s
  3. Schrijf de testmethode
  4. 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.

InputVerwachte 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