Почему в моем тесте возникает исключение java.io.IOException: поток закрыт?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Почему в моем тесте возникает исключение java.io.IOException: поток закрыт?

Сообщение Anonymous »

Работая над UT проекта Java 11 с Springboot, я обнаружил следующую трассировку стека:

Код: Выделить всё

java.io.IOException: Stream Closed
at java.base/java.io.FileInputStream.readBytes(Native Method)
at java.base/java.io.FileInputStream.read(FileInputStream.java:279)
at com.amazonaws.internal.SdkFilterInputStream.read(SdkFilterInputStream.java:90)
at java.base/java.io.FilterInputStream.read(FilterInputStream.java:107)
at com.comsurf.services.export.ExportServiceImpl.lambda$exportDocumentsFicheToZip$26(ExportServiceImplementation.java:795)

Строка, вызывающая проблемы, — это строка while следующего кода:

Код: Выделить всё

//the map is fullfilled with the name of the objects/documents and the content of the documents recovered from s3 (Map s3ObjectInputStream)

Map s3ObjectInputStreamMap...

s3ObjectInputStreamMap.keySet().forEach(key -> {
var zipEntry = new ZipEntry(key);
try {
zipOutputStream.putNextEntry(zipEntry);
var objectContent = s3ObjectInputStreamList.get(key);
var bytes = new byte[1024];
int length;
while ((length = objectContent.read(bytes)) >= 0) {
zipOutputStream.write(bytes, 0, length);
}
objectContent.close();
zipEntry.clone();
} catch (IOException e) {
e.printStackTrace();
}
});
Дело в том, что код при использовании в приложении работает хорошо, но в тесте он выполняет первую итерацию while, а на второй итерации в трассировке стека отображается ошибка pops.
Я создал следующий метод для создания объектов, возвращаемых из S3Service (имитируемый сервис) в тесте:

Код: Выделить всё

private static S3Object getS3Object(String fileName) throws FileNotFoundException {
S3Object s3Object = new S3Object();
s3Object.setKey(fileName);
File initialFile = new File(FILE_ADRESS+ "/" + fileName);
InputStream targetStream = new FileInputStream(initialFile);
s3Object.setObjectContent(targetStream);
return s3Object;
}
Я не знаю, почему у меня возникает ошибка java.io.IOException: Stream Closed. Может ли кто-нибудь дать объяснение/решение этой проблемы?

Подробнее здесь: https://stackoverflow.com/questions/787 ... in-my-test
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»