Entiendo su pregunta como "Una forma buena / aceptada de probar una clase que depende de las operaciones del sistema de archivos". No asumo que quieres probar el sistema de archivos de tu sistema operativo.
Para mantener el esfuerzo de 'interactuar con las operaciones de su sistema de archivos y "burlarse de ellos", como sugirió la respuesta de @Doc Brown lo más pequeño posible, es una buena idea usar flujos binarios de Java o un lector de texto (o su equivalente en c # o el lenguaje de programación que está usando) en lugar de usar Archivos con nombres de archivo directamente en su clase desarrollada por tdd.
Ejemplo:
Usando Java he implementado una clase CsvReader
public class CsvReader {
private Reader reader;
public CsvReader(Reader reader) {
this.reader = reader;
}
}
Para probar, utilicé datos de memoria como este
String contentOfCsv = "TestColumn1;TestColumn2\n"+
"value1;value2\n";
CsvReader sut = new CsvReader(java.io.StringReader(contentOfCsv));
o incluir datos de prueba en los recursos
CsvReader sut = new CsvReader(getClass().getResourceAsStream("/data.csv"));
En producción uso el sistema de archivos
CsvReader sut = new CsvReader(new BufferedReader( new FileReader( "/import/Prices.csv" ) ));
De esta forma, mi CsvReader no depende del sistema de archivos sino de un "Lector" de abstracción donde hay una implementación para el sistema de archivos.