Я написал код java для чтения содержимого файла AWS S3, если это текстовый файл и модульный тест для тестирования. Здесь в модуле мой тест я создаю временный файл во временной папке, записываю содержимое в файл и загружаю его в файл s3 (@BeforeAll)
. Следующий служебный класс предназначен для чтения этого загруженного файла.
Я надеюсь, что метод, который я написал, выполняет свою работу. Но написанное мной модульное тестирование не проходит из-за ошибки подтверждения.
Ниже приведены мой служебный класс и модульный тест. Может кто-нибудь указать, где я ошибся?
Класс утилит
public static S3Response read(S3Request s3Request) {
S3Validation.source(s3Request);
S3Object s3object = AWSClient.getAwsS3Client().getObject(S3RequestBuilder.read(s3Request));
BufferedReader reader = new BufferedReader(new InputStreamReader(s3object.getObjectContent()));
String line;
try {
line = reader.readLine();
StringBuilder stringBuilder = new StringBuilder();
while (line != null) {
stringBuilder.append(line).append("\n");
line = reader.readLine();
}
String fileAsString = stringBuilder.toString();
response.setResponse(fileAsString);
} catch (IOException ex) {
LOGGER.error(ex.getMessage());
}
return response;
}
JUnit test
@Test
public void test_readFile() throws IOException {
s3Request = new S3Request();
s3Request.setSourceURI(CommonParameters.S3_PREFIX + SSMUtil.getBucketName(SSMParameters.SSM_BUCKETNAME)
+ "/ReadFile/read.txt");
S3Utils.read(s3Request);
System.out.println(S3Utils.read(s3Request).getResponse());
assertEquals(content, S3Utils.read(s3Request).getResponse().toString());
}
И я использовал следующий метод для написания контента в файл.
Files.createDirectories(Paths.get(uploadReadSource));
File read = File.createTempFile("read", ".txt", new File(uploadReadSource));
s3Request.setLocalPath(read.getAbsolutePath());
s3Request.setDestURI(CommonParameters.S3_PREFIX + SSMUtil.getBucketName(SSMParameters.SSM_BUCKETNAME)
+ "/ReadFile/read.txt");
BufferedWriter bufferWriter = new BufferedWriter(new FileWriter(read));
bufferWriter.write(content);
bufferWriter.close();
S3Utils.uploadFile(s3Request);
S3Response Class
public class S3Response {
private boolean isSuccess;
private String response;
public S3Response() {
}
public S3Response(boolean isSuccess, String response) {
this.setSuccess(isSuccess);
this.setResponse(response);
}
public boolean isSuccess() {
return isSuccess;
}
public void setSuccess(boolean isSuccess) {
this.isSuccess = isSuccess;
}
public String getResponse() {
return response;
}
public void setResponse(String response) {
this.response = response;
}
}
Получаемая ошибка подтверждения:
org.opentest4j.AssertionFailedError: expected: <This is the temporary data written to temp file> but was: <This is the temporary data written to temp file
>