2010-02-02 2 views
5

J'ai développé un framework interne conçu avec un tas de modules Perl. Tous ces modules dépendent d'un seul module qui expose certaines fonctionnalités de Win32. Par exemple Les modules A, B, C, D, etc. dépendent tous d'un seul module Z. Tous ces modules vont donc être importés en utilisant "MyFramework :: Z". Tous ces modules A, B, C, etc. peuvent être utilisés individuellement et ne dépendent d'aucun autre module de structure. Maintenant, avec cette conception simple à l'esprit - comment puis-je concevoir mes tests unitaires. Je prévois d'utiliser Test :: More pour faire tous les tests unitaires. Dois-je écrire des tests unitaires individuels pour chaque module? Il y a 25 modules différents qui appartiennent à ce framework. Aucune suggestion?Comment concevoir des tests unitaires pour plusieurs modules Perl dans la même distribution?

+0

Merci pour toutes vos suggestions. – John

Répondre

6

Les tests unitaires pour Z devraient couvrir la fonctionnalité Win32.

Les tests unitaires pour A doivent couvrir la fonctionnalité de A qui n'est pas couverte par Z. Répétez pour B, C, D et ainsi de suite.

Si vous trouvez que C, E et G font des choses semblables et vous écrivez des tests unitaires presque identiques, qui est le signal à factoriser - extraire les composants communs jusqu'à un niveau plus élevé (par exemple, le module CEG) et il suffit de laisser et tester les parties spéciales de C, E, et G dans leurs modules d'origine.

1

Il y a plusieurs choses que vous pouvez faire:

  1. commencer à les écrire! ;)
  2. Un test par module (comme vous l'avez suggéré) et essayez de tester «seulement» le code que vous testez. (Peut paraître évident, mais il est facile de commencer à réfléchir sur les interactions avec d'autres modules)
  3. Consultez les tests de modules sur CPAN pour des exemples
  4. Lisez à propos BDD et TDD
2

En général, je commence par la mise en œuvre teste les fonctionnalités de bas niveau et conserve les tests pour les modules conçus pour être indépendants les uns des autres dans des fichiers séparés.

Si vous pensez qu'il est important de pouvoir tester votre code indépendamment de l'environnement Win32, créez du code de module (spécialement pour les tests) qui émule l'interface du module spécifique à Win32. Une instruction package avec certaines fonctions réduites peut très bien faire l'affaire, en fonction de ce que fait réellement le module réel.

Questions connexes