Si vous ne l'avez pas encore fait, procurez-vous une copie du livre de Michael Feathers "Working Effectively with Legacy Code". Tout est sur la façon d'ajouter des tests au code existant, ce qui est exactement ce que vous recherchez. Mais jusqu'à ce que vous ayez fini de lire le livre, je vous suggère de commencer par un test de régression: créez la classe, demandez-lui d'écrire le fichier sur le disque, puis comparez ce fichier à un fichier "bien connu" que vous avez caché dans votre référentiel source quelque part. Si elles ne correspondent pas, échouer le test.
Puis commencez à regarder les décisions intéressantes que votre classe prend. Voyez comment vous pouvez les tester. Peut-être que vous extrayez des conditions if compliquées dans des fonctions publiques qui retournent bool, et vous écrivez une batterie de tests pour prouver que, avec les bonnes entrées, cette fonction renvoie la bonne valeur. Peut-être que la génération d'une chaîne particulière a une logique intéressante; Commencez à le tester.
En chemin, vous pouvez trouver des objets qui veulent sortir. Par exemple, vous pouvez trouver que le code (ou les tests!) Serait plus simple s'il y avait une classe séparée qui génère une seule ligne de sortie. Vas-y avec. Tu as ton test de régression pour t'attraper si tu baises quoi que ce soit.
Travaillez sans relâche pour éliminer les dépendances (mais assurez-vous d'avoir un test de plus haut niveau, comme un test de régression, pour vous rattraper si vous faites des erreurs).Si votre classe crée son propre FileStream et écrit sur le système de fichiers, changez-le pour prendre un TextWriter dans son constructeur, afin que vous puissiez écrire des tests qui passent dans un StringWriter et ne jamais toucher au système de fichiers. Une fois cela fait, vous pouvez vous débarrasser de l'ancien test qui écrit un fichier sur le disque (mais seulement si vous ne l'avez pas cassé en essayant d'écrire le nouveau test!) Si votre classe a besoin d'une connexion à la base de données un test qui passe dans de fausses données. Etc.