Tôi hiểu câu hỏi của bạn là "Cách tốt / được chấp nhận để kiểm tra một lớp phụ thuộc vào hoạt động của hệ thống tệp". Tôi không cho rằng bạn muốn kiểm tra hệ thống tập tin của hệ điều hành của bạn.
Để duy trì nỗ lực 'giao diện cho các hoạt động của hệ thống tệp của bạn và "giả lập chúng" "như câu trả lời @Doc Brown đề xuất càng nhỏ càng tốt, nên sử dụng luồng nhị phân java hoặc trình đọc văn bản (hoặc tương đương trong c # hoặc ngôn ngữ lập trình bạn đang sử dụng) thay vì sử dụng Tệp có tên tệp trực tiếp trong lớp do bạn phát triển.
Thí dụ:
Sử dụng java Tôi đã triển khai một lớp CsvReader
public class CsvReader {
private Reader reader;
public CsvReader(Reader reader) {
this.reader = reader;
}
}
Để kiểm tra tôi đã sử dụng dữ liệu bộ nhớ như thế này
String contentOfCsv = "TestColumn1;TestColumn2\n"+
"value1;value2\n";
CsvReader sut = new CsvReader(java.io.StringReader(contentOfCsv));
hoặc đưa testdata vào tài nguyên
CsvReader sut = new CsvReader(getClass().getResourceAsStream("/data.csv"));
Trong sản xuất tôi sử dụng hệ thống tập tin
CsvReader sut = new CsvReader(new BufferedReader( new FileReader( "/import/Prices.csv" ) ));
Bằng cách này, CsvReader của tôi không phụ thuộc vào hệ thống tệp mà phụ thuộc vào "Trình đọc" trừu tượng, nơi có triển khai cho hệ thống tệp.