openConnection:

Creatief, technisch en nauwkeurig

GHTestCase sjablonen voor Xcode

Ik heb ik mij bekeerd tot het zogeheten test-gedreven programmeren (test-driven development), maar ik moet bekennen dat ik mijn overtuiging nog niet echt in de praktijk heb kunnen brengen -- tot ik GHUnit ontdekte. Maar de hele tijd GHTestCase subclasses met de hand maken -- daar hebben we Xcode sjablonen voor, toch?
Nog niet zo lang geleden heb ik mij bekeerd tot het zogeheten test-gedreven programmeren ( test-driven development), maar ik moet bekennen dat ik mijn overtuiging nog niet echt in de praktijk heb gebracht. Ik heb verschillende pogingen ondernomen, echt, maar de realiteit was te weerbarstig. Apple’s integratie van SenTest in Xcode leek het antwoord, maar werkte eigenlijk alleen echt goed voor het testen van frameworks, dankzij Chris Hanson’s artikelen.
Cocoa apps testen werkte wel -- tot ik de iPhone SDK’s installeerde. Misschien dat er ook nog een nieuwe Xcode versie tussendoor kwam, ik heb de akelige details verdrongen, maar het einde van het verhaal was dat al mijn test-gedreven paradijs veranderde in een crash-gedreven hel, tot Gabriel kwam. Gabriel Handford, bedoel ik.

In mijn wanhopige gegoogle kwam ik verschillende enthousiaste aanbevelingen tegen van Handford’s GHUnit. Nu zegt dat op zich niet veel. Op programmeer-fora en blogs kom je altijd mensen tegen die enthousiast zijn over dit framework of dat programma, maar in de praktijk vallen veel van deze oplossingen, plugins en kits vies tegen. Een hoop installatie problemen en foutmeldingen, maar verder levert het niet veel op. Maar goed, ik besloot om het risico maar weer eens te nemen en dit keer: hoera! GHUnit is niet probleemloos gebleken, maar het werkt echt, zowel op MacOS als in iOS.

Kortom, een jaar nadat ik besloten had test-gedreven te ontwikkelen, is het dan eindelijk zover. Ik schrijf nu eerst de test, dan de code. Dat betekent dat ik een hoop GHTestCase subclasses creëer in Xcode en dat begon algauw vervelend te worden. En wat doe je dat als programmeur? Je maakt je eigen sjablonen. Ik heb dus Xcode’s SenTest sjablonen gekopieerd en ze omgewerkt tot GHTestCase sjablonen, gebaseerd op Gabriel Handford’s online documentatie op http://gabriel.github.com/gh-unit/.

De sjablonen staan op mijn Downloads pagina in zip formaat, en in mijn Subversion repository op http://www.tweebomen.com/GHTestCase_templates/.

Je kan de Mac OS (Cocoa) versie gelijk naar de juiste folder op je hard disk uitchecken door het volgende commando in Terminal te typen of te kopiëren:
svn checkout http://www.tweebomen.com/GHTestCase_templates/MacOS/ /Developer/Library/Xcode/File\ Templates/Cocoa\ Class

Om de iPhone (Cocoa Touch) versie gelijk naar de juist folder uit te checken, voer het volgende in in je Terminal:
svn checkout http://www.tweebomen.com/GHTestCase_templates/iPhone/ /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/File\ Templates/Cocoa\ Touch\ Class