No estoy seguro acerca de marcos específicos, pero un enfoque general en términos de POO sería escribir algunas capas abstractas encima de cualquier código de acceso a archivos (¡interfaces en abundancia!) y quizás una fachada para facilitar el uso de operaciones comunes. luego simplemente simula una capa debajo del código que está probando actualmente y luego es esencialmente un sistema de archivos falso (o al menos el código que está probando no sabrá lo contrario).
Si busca usar un marco de inyección de dependencia para manejar esto, facilitará la capacidad de cambiar componentes para una implementación falsa de una interfaz. Si sigue los patrones de inversión de control, pasando cualquier dependencia al constructor de la clase que está probando, esto también facilitará la prueba.
public interface IFileSystem {
IFileHandle Load(string path);
}
public class ClassBeingTested {
public ClassBeingTested(IFileSystem fileSystem) {
}
public void DoSomethingWithFileSystem() {
}
}
Espero que mi java sea correcto, no he escrito java en mucho tiempo, pero espero que te enteres. ¡Ojalá no esté subestimando el problema aquí y siendo demasiado simplista!
por supuesto, todo esto es asumiendo que te refieres a verdaderas pruebas unitarias, es decir, probar las unidades de código más pequeñas posibles, y no un sistema completo. para las pruebas de integración se necesita un enfoque diferente.