Ich verstehe Ihre Frage als "eine gute / akzeptierte Möglichkeit, eine Klasse zu testen, die von Dateisystemoperationen abhängt". Ich gehe nicht davon aus, dass Sie das Dateisystem Ihres Betriebssystems testen möchten.
Um den Aufwand für 'Schnittstellen zu Ihren Dateisystemoperationen und deren "Verspottung"' so gering wie möglich zu halten, empfiehlt es sich, Java - Binärdatenströme oder Textleser (oder ein gleichwertiges Element in c # oder c #) zu verwenden die von Ihnen verwendete Programmiersprache), anstatt Dateien mit Dateinamen direkt in Ihrer von tdd entwickelten Klasse zu verwenden.
Beispiel:
Mit Java habe ich eine Klasse CsvReader implementiert
public class CsvReader {
private Reader reader;
public CsvReader(Reader reader) {
this.reader = reader;
}
}
Zum Testen habe ich solche Speicherdaten verwendet
String contentOfCsv = "TestColumn1;TestColumn2\n"+
"value1;value2\n";
CsvReader sut = new CsvReader(java.io.StringReader(contentOfCsv));
oder Testdaten in die Ressourcen einbetten
CsvReader sut = new CsvReader(getClass().getResourceAsStream("/data.csv"));
In der Produktion verwende ich das Dateisystem
CsvReader sut = new CsvReader(new BufferedReader( new FileReader( "/import/Prices.csv" ) ));
Auf diese Weise ist mein CsvReader nicht vom Dateisystem abhängig, sondern von einer Abstraktion "Reader", in der es eine Implementierung für das Dateisystem gibt.