Vincent Tourraine
Blog

Tests unitaires pour iOS

#iOS #Xcode #Objective-C #TDD #OCUnit

Le développement iOS bénéficie d’un langage solide (Objective-C) et d’un SDK moderne (Cocoa Touch). Il existe pourtant un aspect technique, généralement considéré comme essentiel, sur lequel la plateforme est en retard flagrant : les tests unitaires, et le “Test-Driven Development” (TDD) en particulier. C’est le moment de s’y mettre.

Pas assez « amazing » ?

Le problème, c’est peut-être qu’Apple ne fait pas beaucoup d’efforts. La documentation est modeste, le sujet n’est pas évoqué lors des WWDC et les codes d’exemples n’en contiennent jamais. À croire que les tests unitaires n’existent pas à Cupertino.

Le seul progrès récent dans ce domaine concerne l’intégration relativement poussée d'OCUnit (SenTest, le framework ‘officiel’ pour les tests Objective-C) à Xcode 4. Lors de la création d’un nouveau projet, l’option “inclure tests unitaires” permet la configuration automatique du projet, avec « target » dédiée. Bien. Et le raccourci ‘Cmd’ + ‘U’ permet effectivement de lancer facilement l’exécution des tests, sur un appareil ou avec le simulateur.

OCUnit avec Xcode
OCUnit avec Xcode

Pourtant, même si on ne dispose pas vraiment de statistiques sur le sujet, le constat est facile à établir : la très grande majorité des développeurs iOS (Mac ?) codent sans tests.

Se mettre aux tests

Je vais prendre un exemple que je maîtrise plutôt bien : moi. J’ai passé 3 ans à développer des applications iOS sans écrire le moindre test. J’avais sans doute passé plus de temps avec JUnit qu’avec OCUnit, chose assez incroyable.

Mais depuis quelques mois, je me soigne. Le TDD est mon ami, et comme avec tous les amis il faut lui consacrer beaucoup de temps, mais il le rend bien. Et on rigole souvent à la fin de la journée de toutes ces galères communes.

Les ressources pour se former à la pratique des tests unitaires sur iOS sont rares, on peut donc facilement en faire le tour. À ma connaissance, c’est Graham Lee (@secboffin, a.k.a. « Rouflaquette ») qui remporte le titre de référence en la matière. Vous pouvez le retrouver dans une Master class sur le site iDeveloper TV, avec des présentations vidéos très instructives. N’hésitez pas à vous les procurer. Il vient également tout juste de publier le premier livre consacré à ce sujet, « Test-Driven iOS Development ». Le contenu reprend largement celui des vidéos, mais s’attarde particulièrement sur les grands principes du TDD avec des exemples très détaillés, sans pour autant entrer davantage dans les détails techniques particuliers à iOS. Comme expliqué en haut de ce billet, cette pédagogie est sans doute nécessaire pour la plupart des développeurs concernés.

Test-Driven iOS Development
Test-Driven iOS Development

Une fois les bases assimilées, il ne reste plus qu’à plonger dans OCMock, OCHamcrest et autres Cedar. Autant de sujets qui méritent des billets dédiés, peut-être pour plus tard. Ça vous laisse le temps pour vous familiariser avec OCUnit. ‘Cmd’+‘U’.