Я работаю в Java-приложении с Spring Boot, и в одном из своих UT я создаю ZIP-файл (проверяю записи...) и в конце пытаюсь удалить его из своей системы, но что я пытаюсь, не получается.
Вы можете найти пример кода, который я использую, по следующей ссылке: Почему в моем тесте возникает исключение java.io.IOException: Stream Closed?
Резюме кода:
//I recover the zip
ZipFile zipFile = new ZipFile( "src/test/resources/exported_data_test.zip");
List<String> entries = zipFile.stream().map(ZipEntry::getName).collect(Collectors.toList())
//Doing assertions...
//Deletion of the zip
File file = new File( "src/test/resources/exported_data_test.zip");
file.delete();
Но в конце теста zip-архив все еще существует в моей системе:
Может ли кто-нибудь помочь мне удалить zip-файл в конце теста?
Вы вызываете close
на ZipFile перед началом новой операции?
Прежде чем начинать новую операцию с тем же файлом, вам необходимо закрыть его.
На основе вашего примера:
//I recover the zip
ZipFile zipFile = new ZipFile( "src/test/resources/exported_data_test.zip");
List<String> entries = zipFile.stream().map(ZipEntry::getName).collect(Collectors.toList())
zipFile.close(); // Added
//Doing assertions...
//Deletion of the zip
File file = new File( "src/test/resources/exported_data_test.zip");
file.delete();
Лучше всего использовать интерфейс Closable/AutoCloseable
с возможностью попробовать с ресурсом:
List<String> entries;
//I recover the zip
try (ZipFile zipFile = new ZipFile( "src/test/resources/exported_data_test.zip")) {
entries = zipFile.stream().map(ZipEntry::getName).collect(Collectors.toList())
}
//Doing assertions...
//Deletion of the zip
File file = new File( "src/test/resources/exported_data_test.zip");
file.delete();
Обратите внимание, что Zip создается внутри скобок попытки. После выхода из области, следующей за попыткой, программа вызовет закрытие zip-файла.
@BIBOOUnit, результат ложный