Rozumiem twoje pytanie jako „Dobry / zaakceptowany sposób przetestowania klasy zależnej od operacji systemu plików”. Nie zakładam, że chcesz przetestować system plików swojego systemu operacyjnego.
Aby utrzymać wysiłek związany z „interfejsami do operacji w systemie plików i„ wyśmiewać je ”, ponieważ sugerowana odpowiedź @Doc Brown jest tak mała, jak to tylko możliwe, dobrym pomysłem jest użycie binarnych strumieni Java lub czytnika tekstu (lub ich odpowiednika w języku c # lub używany język programowania) zamiast używania plików z nazwami plików bezpośrednio w klasie opracowanej przez TDD.
Przykład:
Za pomocą java zaimplementowałem klasę CsvReader
public class CsvReader {
private Reader reader;
public CsvReader(Reader reader) {
this.reader = reader;
}
}
Do testów wykorzystałem takie dane w pamięci
String contentOfCsv = "TestColumn1;TestColumn2\n"+
"value1;value2\n";
CsvReader sut = new CsvReader(java.io.StringReader(contentOfCsv));
lub umieść dane testowe w zasobach
CsvReader sut = new CsvReader(getClass().getResourceAsStream("/data.csv"));
W produkcji używam systemu plików
CsvReader sut = new CsvReader(new BufferedReader( new FileReader( "/import/Prices.csv" ) ));
W ten sposób mój CsvReader nie zależy od systemu plików, ale od abstrakcyjnego „Czytnika”, w którym istnieje implementacja systemu plików.