Je comprends votre question comme "un bon moyen / accepté de tester une classe qui dépend des opérations du système de fichiers". Je ne suppose pas que vous souhaitez tester le système de fichiers de votre système d'exploitation.
Afin de maintenir l'effort pour «s'interfacer avec vos opérations sur le système de fichiers et les« simuler »comme le suggère la réponse de @Doc Brown, il est préférable d'utiliser des flux binaires java ou un lecteur de texte (ou un équivalent en c # ou le langage de programmation que vous utilisez) au lieu d'utiliser des fichiers avec des noms de fichiers directement dans votre classe développée par tdd.
Exemple:
En utilisant java, j'ai implémenté une classe CsvReader
public class CsvReader {
private Reader reader;
public CsvReader(Reader reader) {
this.reader = reader;
}
}
Pour tester, j'ai utilisé des données en mémoire comme celle-ci
String contentOfCsv = "TestColumn1;TestColumn2\n"+
"value1;value2\n";
CsvReader sut = new CsvReader(java.io.StringReader(contentOfCsv));
ou intégrer des données de test dans les ressources
CsvReader sut = new CsvReader(getClass().getResourceAsStream("/data.csv"));
En production j'utilise le système de fichiers
CsvReader sut = new CsvReader(new BufferedReader( new FileReader( "/import/Prices.csv" ) ));
De cette façon, mon CsvReader ne dépend pas du système de fichiers mais d'un abstraction "Reader" où il y a une implémentation pour le système de fichiers.