как сравнить два bytearrayinputstream в тестировании junit? - PullRequest
0 голосов
/ 17 мая 2018

Сравнивая два bytearrayinputstream, я сталкиваюсь с приведенными ниже ошибками для приведенной ниже функции

код здесь

@Test
    public void fileIsSame() throws IOException, InvalidEndpointException, InvalidPortException, InvalidKeyException, InvalidBucketNameException, NoSuchAlgorithmException, InsufficientDataException, NoResponseException, ErrorResponseException, InternalException, InvalidArgumentException, XmlPullParserException {
        FileInputStream file = new FileInputStream("/Users/gauris/Documents/samplephoto/pexels-photo-46710.jpeg"); 
        String fileName = "pexels-photo-46710.jpeg";
        ByteArrayInputStream uploadByteArrayInputStream = new ByteArrayInputStream(file.toString().getBytes());
        minioClient.putObject(bucketName, fileName, uploadByteArrayInputStream, uploadByteArrayInputStream.available(), "application/octet-stream");
        String actualresult = IOUtils.toString(uploadByteArrayInputStream, StandardCharsets.UTF_8);

        InputStream stream = minioClient.getObject(bucketName, fileName);
        byte currentXMLBytes[] = stream.toString().getBytes();   //convert inputStream to byteArrayInputStream;
        ByteArrayInputStream byteInputStream = new ByteArrayInputStream(currentXMLBytes);

        String Expectedresult = IOUtils.toString(stream, StandardCharsets.UTF_8);
        System.out.println("expected: "+Expectedresult);
        System.out.println("actual: "+ actualresult);

        //Arrays.equals((uploadByteArrayInputStream).toByteArray(), (byteInputStream).toByteArray());

        assertEquals(byteInputStream.toString(), uploadByteArrayInputStream.toString());
        uploadByteArrayInputStream.close();
        stream.close();
    }

Ошибки

org.junit.ComparisonFailure: expected:<...yteArrayInputStream@[43195e57]> but was:<...yteArrayInputStream@[333291e3]> at org.junit.Assert.assertEquals(Assert.java:115) at org.junit.Assert.assertEquals(Assert.java:144)

1 Ответ

0 голосов
/ 17 мая 2018

Метод To String печатает удобочитаемое представление данного объекта, а не содержимое потока.Сначала вы должны получить строки из потоков, а затем сравнить их.

Если вы используете Java 9, вы можете

new String(input.readAllBytes(), StandardCharsets.UTF_8);

или по-старому

ByteArrayOutputStream result = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) != -1) {
    result.write(buffer, 0, length);
}
// StandardCharsets.UTF_8.name() > JDK 7
return result.toString("UTF-8");

, а затем сравнивать строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...