Comprendo la tua domanda come "Un modo valido / accettato per testare una classe che dipende dalle operazioni del file system". Non credo che tu voglia testare il filesystem del tuo sistema operativo.
Per mantenere lo sforzo di "interfacciarsi con le operazioni del tuo filesystem e" deriderli "come risposta di @Doc Brown suggerita il più piccola possibile è una buona idea usare java stream binari oppure lettore di testo (o equivalente in c # o il linguaggio di programmazione che stai utilizzando) invece di utilizzare File con nomi di file direttamente nella tua classe sviluppata da tdd.
Esempio:
Usando java ho implementato una classe CsvReader
public class CsvReader {
private Reader reader;
public CsvReader(Reader reader) {
this.reader = reader;
}
}
Per i test che ho usato in dati di memoria come questo
String contentOfCsv = "TestColumn1;TestColumn2\n"+
"value1;value2\n";
CsvReader sut = new CsvReader(java.io.StringReader(contentOfCsv));
o incorporare testdata nelle risorse
CsvReader sut = new CsvReader(getClass().getResourceAsStream("/data.csv"));
In produzione uso il file system
CsvReader sut = new CsvReader(new BufferedReader( new FileReader( "/import/Prices.csv" ) ));
In questo modo il mio CsvReader non dipende dal filesystem ma da un'astrazione "Reader" dove esiste un'implementazione per il filesystem.