ฉันเข้าใจคำถามของคุณว่า "วิธีที่ดี / เป็นที่ยอมรับในการทดสอบคลาสที่ขึ้นอยู่กับการทำงานของระบบไฟล์" ฉันไม่คิดว่าคุณต้องการทดสอบระบบไฟล์ของระบบปฏิบัติการของคุณ
เพื่อที่จะให้ความพยายามที่ 'การเชื่อมต่อกับการดำเนินงานระบบแฟ้มของคุณและ "เยาะเย้ยพวกเขาออกไป' เป็นคำตอบ @Doc สีน้ำตาลปัญหาขนาดเล็กที่สุดเท่าที่เป็นไปได้มันเป็นความคิดที่ดีที่จะใช้ java ในลำธารไบนารีหรืออ่านข้อความ (หรือบิดาเทียบเท่าใน C # หรือ ภาษาการเขียนโปรแกรมที่คุณใช้) แทนที่จะใช้ไฟล์ที่มีชื่อไฟล์โดยตรงในคลาสที่คุณพัฒนา tdd
ตัวอย่าง:
การใช้ java ฉันใช้คลาส CsvReader
public class CsvReader {
private Reader reader;
public CsvReader(Reader reader) {
this.reader = reader;
}
}
สำหรับการทดสอบฉันใช้ในข้อมูลหน่วยความจำเช่นนี้
String contentOfCsv = "TestColumn1;TestColumn2\n"+
"value1;value2\n";
CsvReader sut = new CsvReader(java.io.StringReader(contentOfCsv));
หรือฝังข้อมูลทดสอบลงในทรัพยากร
CsvReader sut = new CsvReader(getClass().getResourceAsStream("/data.csv"));
ในการผลิตฉันใช้ระบบไฟล์
CsvReader sut = new CsvReader(new BufferedReader( new FileReader( "/import/Prices.csv" ) ));
วิธีนี้ CsvReader ของฉันไม่ได้ขึ้นอยู่กับระบบไฟล์ แต่เป็นนามธรรม "Reader" ซึ่งมีการนำไปใช้งานสำหรับระบบไฟล์