2008-11-13 8 views
4

Je travaille sur un système qui traite les documents qui sont déversés dans un répertoire cible. Je prends les fichiers en détectant l'événement FileSystemWatcher OnChanged.Comment testez-vous un événement FileSystemWatcher?

Dans le cadre d'un test unitaire, comment dois-je automatiser cela? Comment dois-je organiser les fichiers d'entrée et les fichiers de sortie qui sont comparés pour vérifier que les transformations sont correctes? Est-ce quelque chose qui est mieux géré par un fichier batch émettant des commandes diff?

+2

très soigneusement - OnChanged a quelques bizarreries, par ex. il peut se déclencher lorsque le fichier est créé mais avant qu'il ne soit entièrement écrit, il peut ne pas se déclencher lorsque le fichier est supprimé ou déplacé, etc. Méfiez-vous de ces –

Répondre

7

Eh bien, considérons d'abord ce que vous voulez tester.

Est-ce que, après avoir détecté qu'un fichier a été modifié, il est traité correctement?

Ou est-ce que la classe FileSystemWatcher fonctionne?

Ou est-ce que le système d'exploitation envoie les notifications directement dans le bon ordre (où droit signifie essentiellement que vous attendez)?

Si seulement le traitement doit être fait, je envisagerais de simuler la classe observateur, ou utiliser un conteneur IoC pour vous fournir quelque chose qui déclenche des événements pour le test unitaire. Si le système d'exploitation fournit les bons événements dans le bon ordre, alors je simulerais le code qui traite le fichier, juste pour enregistrer l'état qui dit "oui, on m'a dit que ce fichier avait changé", et le test unitaire manipulerait alors les fichiers dans un répertoire temporaire. Mais attention, plus la complexité extérieure de votre test unitaire est grande, plus il sera cassant.

Questions connexes