【问题标题】:How to mock S3 in order to test Java code in Junit如何模拟 S3 以便在 Junit 中测试 Java 代码
【发布时间】:2018-06-08 04:24:04
【问题描述】:

我采用了参考表here 以实现 S3 模拟以进行集成测试

我的困惑和我没有得到的部分是我如何在这里使用 docker? 我必须安装一些东西吗?

我刚刚在我的 maven 中添加了以下代码

<dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-datapipeline</artifactId>
            <version>1.11.295</version>
        </dependency>

并写在下面的课

package com.amazonaws.lambda.demo;

import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.AnonymousAWSCredentials;
import com.amazonaws.client.builder.AwsClientBuilder;
import com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Builder;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import io.findify.s3mock.S3Mock;

public class S3Mock {
     
    S3Mock api = new S3Mock.Builder().withPort(8001).withInMemoryBackend().build();
    api.start();

    AmazonS3Client client = new AmazonS3Client(new AnonymousAWSCredentials());
    // use local API mock, not the AWS one
    client.setEndpoint("http://127.0.0.1:8001");
    client.createBucket("testbucket");
    client.putObject("testbucket", "file/name", "contents");
}

但是我不能自己编译我的类。 有人可以帮助我了解我还需要做什么才能完成这项工作。

【问题讨论】:

    标签: java amazon-s3 junit integration-testing


    【解决方案1】:

    我相信你已经错过了对 S3Mock 的依赖,它带有以下 maven:

    <dependency>
        <groupId>io.findify</groupId>
        <artifactId>s3mock_2.12</artifactId>
        <version>0.2.5</version>
        <scope>test</scope>
    </dependency>
    

    另外,我建议您将类从 S3Mock 重命名为 AmazonS3Mock 之类的名称,以避免命名空间混淆

    【讨论】:

      猜你喜欢
      • 2022-06-13
      • 1970-01-01
      • 2010-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多