Fakes Framework : bienvenue chez les Shims !

Dans notre article précédent paru dans Programmez n°155 de septembre 2012, nous nous étions intéressés au Test Driven Development (TDD) ainsi qu’aux nouvelles fonctionnalités présentes dans Visual Studio 2012 qui permettent la mise en oeuvre de celui-ci. Comme vous avez pu le constater, le TDD permet d’assurer un code de bonne qualité. Toutefois, il s’avère très difficile à mettre en place et surtout sur du code historique (dit « Legacy Code »). Microsoft, avec Le Fakes Framework, apporte une solution à la fois originale et parfaitement intégrée dans la nouvelle version de notre environnement de développement de prédilection. Cet article vous présente plus en détail comment utiliser cette solution.

Une des problématiques rencontrées lors de l’intégration des tests unitaires est la dépendance envers des environnements externes, à savoir la base de données, les composants et services web externes, d’autres types de sources de données, mais aussi envers des résultats d’appels des méthodes au sein d’une même classe. Prenons par exemple un test unitaire qui inclut la récupération des données. Si les données requêtées ne sont pas correctes ou si la base de données n’est pas accessible, tout le test échoue, même si le code à tester est implémenté de manière correcte et efficace. Dans ce cas, le test unitaire ne teste pas seulement le code de manière atomique, mais aussi toutes les dépendances, ce qui pose problème. Comment assurer que les résultats des tests restent constants et valides ? Bien sûr, les données proviennent de la base de données ; dans une approche orientée objet ces données sont stockées en objet (POCO, DataSet, DataTable, etc.) après récupération. Du coup, on peut appliquer le « mocking » en replaçant les vrais objets par des objets de substitution (Shims ou Mocks), complètement maîtrisés. On s’affranchit ainsi des dépendances décrites ci-dessus. L’enjeu est désormais la création rapide et simple des objets mockés. Si la création et la gestion des Mocks sont difficiles, chronophages ou chères, alors les développeurs se détourneront de l’écriture de tests unitaires. L’approche TDD est une solution naturelle lorsque l’on démarre un nouveau projet. Toutefois, elle est parfois difficile à mettre en oeuvre sur du code historique. C’est ici qu’intervient le Fakes Framework.

Jason De Oliveira
Fathi Bellahcene

S'ABONNER
Egalement au sommaire n°: 160