2009-04-11 12 views
1

Je suis en train d'écrire une bibliothèque wrapper en C# qui encapsule un objet COM qui a une API très petite et douloureuse à utiliser et qui a un peu de problème avec le fouillis.Déclenchement d'une bibliothèque API

Ceci est le premier projet que j'ai utilisé TDD et se moquer, donc désolé si ce n'est pas vraiment un gros problème. J'ai donné une copie de ma bibliothèque à un de mes collègues de travail et la première chose qu'il a remarquée était la grande quantité d'interfaces qui étaient dans l'API. Je lui ai expliqué que parce que je faisais des tests unitaires et des moqueurs, j'avais besoin des interfaces pour arrêter les tests touchant l'objet COM, il a compris, mais il m'a fait penser que mon API est peut-être un peu encombrée. comprendre. Ma question est la suivante - Si j'écris une bibliothèque de wrapper où chaque objet touche quelque part l'API COM, quel est le meilleur moyen de désencombrer mon API et de pouvoir tester le code.

Devrais-je utiliser des classes abstraites au lieu d'interfaces pour la plupart des choses? ou devrais-je juste cacher les interfaces qui sont seulement pour des raisons moqueuses dans un espace de noms quelque part?

+0

Est-ce que les interférences sentent aussi mauvais que j'imagine? – ojblass

Répondre

0

Si une interface est là seulement à des fins de moquerie, je suggère de le rendre interne. Vous pouvez ensuite appliquer InternalsVisibleToAttribute à votre bibliothèque wrapper pour exposer les interfaces internes à vos tests.

1

Je n'ai pas trouvé avoir une API exposée pour être un gros problème au-delà du commentaire à un collègue. Votre collègue appréciera la flexibilité avec laquelle votre application va changer au fur et à mesure que vous avancez bien plus que l'API "encombrée".

Je ne m'inquiéterais pas à ce sujet et continuer votre vie. En ce qui concerne le moqueur, je préfère nettement les interfaces aux classes abstraites. Vous trouverez plus vous allez dans ce que vous allez écrire composé applications au lieu de hérités. Cela est dû au fait que vous voulez garder vos objets petits et les dépendances peu de sorte que le test ne se transforme pas en un gros désordre.