Ik hoef tegenwoordig vrijwel nooit meer te pleiten voor het belang van geautomatiseerde testen. Dit zijn acht tools die ik fijn vind om te gebruiken om (integratie) testen te maken.
xUnit
Om te beginnen, mijn favoriete testframework. Ik heb in het verleden veel met MSTest gewerkt, en ook wel een blauwe maandag met NUnit, maar xUnit is mijn favoriet. De notatie werkt prettig en xUnit biedt een betere isolatie van de testen.
FluentAssertions
Eén van de eerste packages die ik in mijn testprojecten toevoeg is FluentAssertions. Zonder Dennis te veel op te hemelen, maar man wat is deze tool briljant. De schrijfwijze leest weg alsof je een boek aan het lezen bent. Een verademing ten opzichte van de Asserts die ik vroeger in mijn testen had zitten.
NSubstitute
Nadat ik FluentAssertions heb geïnstalleerd is meestal nSubstitute de eerstvolgende. Er zijn behoorlijk wat mocking frameworks beschikbaar en misschien is nSubstitute niet de meest uitgebreide, maar dat maakt het ruimschoots goed in gebruikersgemak en leesbaarheid van de code.
https://nsubstitute.github.io/
Testcontainers
Ik ben nooit zo’n fan van de discussie over wat precies een unit is in een unittest. Dus ook niet over wat precies een integratie test is. Maar er komt waarschijnlijk een moment dat je een aantal testen wilt schrijven die tegen een “echte” omgeving aanwerken. Dat is het moment dat testcontainers enorm helpen. Met het grootste gemak maak je allerhande diensten beschikbaar vanuit lichtgewicht containers.
Respawn
Ik moet eerlijk zeggen dat ik probeer om ingewikkelde database acties te voorkomen in testen, maar soms ontkom je er niet aan. Dan is Respawn een interessante package om eens in te duiken. Het geeft je de mogelijkheid om met redelijke performance je database terug te brengen in dezelfde staat.
https://github.com/jbogard/Respawn
Bogus
Eén van de eigenschappen van een test is dat de uitkomst altijd hetzelfde moet zijn als je de test draait. Soms is het prettig als er ook wat chaos testen zijn die je systeem met realistische dummy data voeden. Dan is Bogus een mooie package. Het geeft je de mogelijkheid om je testen te voeden met gelokaliseerde dummy data op basis van bijvoorbeeld de nl regio.
https://github.com/bchavez/Bogus
Verify
Als je de output uit bijvoorbeeld een api wilt valideren, dan kan dit in de praktijk best wel een omvangrijke klus zijn. Verify kan helpen doordat het bij de eerste keer dat een test draait een snapshot maakt van de output. Als in een vervolgtest de output wijzigt dan zal de test falen. Deze functionaliteit kan ook enorm helpen om te bewaken dat je niet per ongeluk een breaking change in je api introduceert.
https://github.com/VerifyTests/Verify
BenchmarkDotNet
Dit is een beetje een bonus vermelding omdat ik er door een collega ontwikkelaar op werd gewezen, maar met BenchmarkDotNet kun je heel eenvoudig je code performance in kaart brengen. Ik heb zelf nooit zo de behoefte om de verschillende platformen met elkaar te vergelijken, maar de mogelijkheden die deze package biedt om performance te meten en op verschillende manieren te visualiseren is wel heel waardevol.