2009-06-25 11 views
1

J'ai une classe qui est responsable de la communication réseau. Je voudrais faire un test unitaire pour ça.Ecriture de tests unitaires pour les classes liées au réseau

Voici où je suis coincé afin d'écrire un test pour cela, je dois mettre en œuvre un serveur avec lequel communiquer mais qui à son tour nécessitera son propre test.

Comment écrivez-vous des tests pour une classe comme celle-ci?

Répondre

5

Sauf si vous écrivez des pilotes de bas niveau, votre classe dépend indubitablement des autres classes pour effectuer les communications réelles. Dans ce cas, j'utiliserais l'injection de dépendance pour fournir ces classes ou ces wrappers autour d'eux, s'ils ne sont pas facilement moqués. Dans vos tests, vous fournissez une version fictive des classes dont vous dépendez (ou des wrappers si vous ne pouvez pas vous moquer des classes réelles). Vérifiez que les méthodes correctes avec les paramètres appropriés sont invoquées par vos méthodes sur les simulacres que vous fournissez. Assurez-vous de disposer de suffisamment de tests unitaires pour vous assurer que vous avez couvert toute la gamme des comportements à partir des dépendances réelles. Cela suffira pour vos tests unitaires.

Vous aurez également besoin de tests d'intégration. Malheureusement, la façon la plus simple de le faire est probablement de développer un serveur fictif complet avec lequel communiquer. Notez que votre serveur fictif n'a besoin de mettre en œuvre que l'interface - pas le code réel à l'autre extrémité. Fournissez des méthodes supplémentaires pour vous permettre de configurer le serveur pour vos tests d'intégration afin que le comportement attendu avec le serveur fictif se produise.

1

Si vous êtes unité -Test une classe qui est responsable de la communication du réseau, alors vous ne test que vous faites la communication correctement. Alors fournissez un simulacre (comme, dans un simulacre) serveur pour qu'il puisse communiquer avec. Il existe de nombreuses bibliothèques simulées que vous pouvez utiliser, telles que EasyMock et jMockit. Si vous voulez tester une communication réelle avec un serveur réel, alors c'est intégration -testing. Bien sûr, la définition exacte de ce que les tests unitaires englobe varie d'un développeur à l'autre.