Saya memahami pertanyaan Anda sebagai "Cara yang baik / diterima untuk menguji kelas yang tergantung pada operasi sistem file". Saya tidak berasumsi bahwa Anda ingin menguji sistem file os Anda.
Untuk menjaga upaya untuk 'antarmuka ke operasi sistem file Anda dan "mengejek mereka"' sebagai jawaban @ Doc Brown disarankan sekecil mungkin itu adalah ide yang baik untuk menggunakan aliran biner java atau pembaca teks (atau ada yang setara dalam c # atau bahasa pemrograman yang Anda gunakan) alih-alih menggunakan File dengan nama file langsung di kelas tdd-dikembangkan.
Contoh:
Menggunakan java, saya telah mengimplementasikan CsvReader kelas
public class CsvReader {
private Reader reader;
public CsvReader(Reader reader) {
this.reader = reader;
}
}
Untuk pengujian saya menggunakan data memori seperti ini
String contentOfCsv = "TestColumn1;TestColumn2\n"+
"value1;value2\n";
CsvReader sut = new CsvReader(java.io.StringReader(contentOfCsv));
atau embel testdata ke sumber daya
CsvReader sut = new CsvReader(getClass().getResourceAsStream("/data.csv"));
Dalam produksi saya menggunakan sistem file
CsvReader sut = new CsvReader(new BufferedReader( new FileReader( "/import/Prices.csv" ) ));
Dengan cara ini CsvReader saya tidak bergantung pada sistem file tetapi pada abstraksi "Pembaca" di mana ada implementasi untuk sistem file.