从S3Bucket进行传输管理器下载目录的集成测试

时间:2018-08-12 11:37:28

标签: java unit-testing amazon-s3 s3-bucket s3transfermanager

我已经使用传输管理器构建器从S3存储桶成功下载了目录。代码如下。

TransferManager transferManager = 
TransferManagerBuilder.standard().withS3Client(client).build();
MultipleFileDownload download = 
transferManager.downloadDirectory(bname, key, destfile);

现在,我正在尝试为此编写测试。我在下面嘲笑了Amazon s3Client代码。

AmazonS3 client = Mockito.mock(AmazonS3.class);

其中存在空指针异常

transferManager.downloadDirectory(bname, key, destfile); 

请帮助我编写单元测试!

1 个答案:

答案 0 :(得分:0)

Don't mock what you don't own

嘲笑别人的代码会做出无法保证的假设,特别是如果您曾经升级正在使用的库。

您可以做几件事:

  1. 使用诸如WireMock之类的工具来创建模拟S3,并使用该工具来创建集成测试。该工具允许您记录/播放与服务器的HTTP交互。如果您进行升级,最终还是可能会中断。
  2. 使用针对真实的S3和真实的Amazon客户端运行的合同测试,以查看它是否真正起作用。我将其放在单独的版本中,并偶尔运行以确保您仍然兼容。

您可以(也许应该)同时使用两者。