Ik wil me eens goed gaan verdiepen in het testen van applicaties. Ik heb al hier en daar wat gelezen over unit testen en test driven development ed. maar ik heb er toch nog wat problemen mee. Ik heb mijn app netjes ingedeelt in verschillende lagen, waarbij ik bij het testen me uiteraard vooral op de domain model laag wil richten (de laag dus waar alle core app/business logica in verwerkt zit in de vorm van objecten die een weerspiegeling zijn van het probleem domein).
Het probleem is dat veel acties eindigen in het update van de database op wat voor manier dan ook. Hoe gaan jullie hier mee om tijdens het testen? Mogelijkheden die ik zou kunnen bedenken zijn om bij iedere test eerst (automatisch) een lege (of gedeeltelijk gevulde) db voor te breiden, waarna de test wordt uitgevoerd en waarop je dan de inhoud van de database controleerd of dit wel overeenkomt met wat de bedoeling was. Een 2de is om voor het wegschrijven helemaal geen acties op de database uit te voeren, maar om ipv. van de objecten die dat verzorgen gewoon stubs/mocks te gebruiken die de acties reporten en de aangeleverde objecten op hun waarden controleren oid.
Wat is nu de beste methode en hoe is jullie ervaring hiermee?
Ik heb de Data Access code vrij los zitten van de domein code, ik roep wel functies op objecten daaruit aan, maar dat doe ik via een object welke een interface gedefinieerd in de domein laag implementeerd en die via een soort van depency injection wordt aangeleverd. Het maken van een stub dus lukt me dus wel.
Het probleem is dat veel acties eindigen in het update van de database op wat voor manier dan ook. Hoe gaan jullie hier mee om tijdens het testen? Mogelijkheden die ik zou kunnen bedenken zijn om bij iedere test eerst (automatisch) een lege (of gedeeltelijk gevulde) db voor te breiden, waarna de test wordt uitgevoerd en waarop je dan de inhoud van de database controleerd of dit wel overeenkomt met wat de bedoeling was. Een 2de is om voor het wegschrijven helemaal geen acties op de database uit te voeren, maar om ipv. van de objecten die dat verzorgen gewoon stubs/mocks te gebruiken die de acties reporten en de aangeleverde objecten op hun waarden controleren oid.
Wat is nu de beste methode en hoe is jullie ervaring hiermee?
Ik heb de Data Access code vrij los zitten van de domein code, ik roep wel functies op objecten daaruit aan, maar dat doe ik via een object welke een interface gedefinieerd in de domein laag implementeerd en die via een soort van depency injection wordt aangeleverd. Het maken van een stub dus lukt me dus wel.