Entendo sua pergunta como "Uma maneira boa / aceita de testar uma classe que depende das operações do sistema de arquivos". Não presumo que você queira testar o sistema de arquivos do seu sistema operacional.
Para manter o esforço de 'fazer interface com as operações do sistema de arquivos e "zombar delas' ', como a resposta do @Doc Brown sugerida o menor possível, é uma boa ideia usar fluxos binários java ou leitor de texto (ou equivalente em c # ou a linguagem de programação que você está usando) em vez de usar Arquivos com nomes de arquivos diretamente na sua classe desenvolvida por tdd.
Exemplo:
Usando java, eu implementei uma classe CsvReader
public class CsvReader {
private Reader reader;
public CsvReader(Reader reader) {
this.reader = reader;
}
}
Para testar, usei dados de memória como este
String contentOfCsv = "TestColumn1;TestColumn2\n"+
"value1;value2\n";
CsvReader sut = new CsvReader(java.io.StringReader(contentOfCsv));
ou incorporar dados de teste nos recursos
CsvReader sut = new CsvReader(getClass().getResourceAsStream("/data.csv"));
Na produção, eu uso o sistema de arquivos
CsvReader sut = new CsvReader(new BufferedReader( new FileReader( "/import/Prices.csv" ) ));
Dessa forma, meu CsvReader não depende do sistema de arquivos, mas de uma abstração "Reader", onde há uma implementação para o sistema de arquivos.