Я не впевнений у конкретних фреймворках, але загальним підходом з точки зору ООП є написання абстрактних шарів поверх будь-якого коду доступу до файлів (інтерфейсів в достатку!) і, можливо, фасаду, щоб полегшити використання загальних операцій. тоді ви просто глузуєте над одним шаром під кодом, який ви зараз тестуєте, і це, по суті, фальшива файлова система (або, принаймні, код, який ви тестуєте, не знатиме інакше).
якщо ви задумаєтеся використовувати фреймворк інжекції залежностей для обробки цього, це полегшить можливість вимкнення компонентів для підробленої реалізації інтерфейсу. якщо ви будете слідувати шаблонам інверсії управління, передаючи будь-які залежності в конструктор класу, який ви тестуєте, це також полегшить тестування.
public interface IFileSystem {
IFileHandle Load(string path);
}
public class ClassBeingTested {
public ClassBeingTested(IFileSystem fileSystem) {
}
public void DoSomethingWithFileSystem() {
}
}
Я сподіваюся, що мій java правильний, я давно не писав java, але, сподіваюся, ви отримаєте дрейф. сподіваюся, я не недооцінюю проблему тут і надмірно спрощую!
Звичайно, все це припускає, що ви маєте на увазі справжнє модульне тестування, тобто тестування найменших можливих одиниць коду, а не всієї системи. для інтеграційного тестування необхідний інший підхід.