Ik ben bezig met het schrijven van een (redelijk) uitgebreide applicatie in PHP5 (OO). Een onderdeel van de applicatie is de O/R-conversie (welke PHP-objecten omzet naar (relationele) databaserecords en v.v.). Ik heb besloten om gebruik te maken van unittesting (PHPunit) om deze O/R-klassen te testen.
Nu heb ik in de O/R-klassen gebruik gemaakt van Exceptions (throw - try/catch). Het probleem met de unittests is dat deze het (uiteraard) prima deden voordat er Exception-handling in zat, maar nu er de try/catch-statements zijn ingevoerd, geeft m'n foutafhandeling netjes een foutmelding terug als er vanuit de O/R-klassen een Exception gethrowd wordt. Heel mooi, maar daardoor stopt uiteraard de unittesting ook meteen, aangezien er naar de catch wordt gesprongen.
Mijn vraag is de volgende: is het mogelijk om na een try/catch door te gaan met de try-code (of beter gezegd: door te gaan met de unittesting) nadat een Exception is gethrowd? Zoals wel te begrijpen is heb ik geen zin om overal de throw's eruit te halen, en om een surrogaat-Exceptionklasse te maken helpt niet (hij zit eenmaal in de catch na het throwen, dus teruggaan naar de rest van de try-statements werkt niet).
Ik ben op de hoogte van het feit dat er een finally-statement bestaat, maar deze is niet bruikbaar in deze situatie, aangezien er een flink aantal testcases worden uitgevoerd die stuk voor stuk een Exception zouden kunnen teruggooien.
Iemand ideeën/suggesties of wellicht een andere aanpak van de unittesting?
Dingen die ik al geprobeerd heb:
- bovengenoemde surrogaat-exceptionklasse gemaakt
- een return in de catch (ja, ik weet het, 't is onlogisch, maar was te proberen)
Nu heb ik in de O/R-klassen gebruik gemaakt van Exceptions (throw - try/catch). Het probleem met de unittests is dat deze het (uiteraard) prima deden voordat er Exception-handling in zat, maar nu er de try/catch-statements zijn ingevoerd, geeft m'n foutafhandeling netjes een foutmelding terug als er vanuit de O/R-klassen een Exception gethrowd wordt. Heel mooi, maar daardoor stopt uiteraard de unittesting ook meteen, aangezien er naar de catch wordt gesprongen.
Mijn vraag is de volgende: is het mogelijk om na een try/catch door te gaan met de try-code (of beter gezegd: door te gaan met de unittesting) nadat een Exception is gethrowd? Zoals wel te begrijpen is heb ik geen zin om overal de throw's eruit te halen, en om een surrogaat-Exceptionklasse te maken helpt niet (hij zit eenmaal in de catch na het throwen, dus teruggaan naar de rest van de try-statements werkt niet).
Ik ben op de hoogte van het feit dat er een finally-statement bestaat, maar deze is niet bruikbaar in deze situatie, aangezien er een flink aantal testcases worden uitgevoerd die stuk voor stuk een Exception zouden kunnen teruggooien.
Iemand ideeën/suggesties of wellicht een andere aanpak van de unittesting?
Dingen die ik al geprobeerd heb:
- bovengenoemde surrogaat-exceptionklasse gemaakt
- een return in de catch (ja, ik weet het, 't is onlogisch, maar was te proberen)