java - 如何模拟 S3 以在 Junit 中测试 Java 代码

标签 java amazon-s3 junit integration-testing

我已经采取了引用表格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");
}

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

最佳答案

我相信你已经错过了下面maven附带的S3Mock的依赖:

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

此外,我建议您将类从 S3Mock 重命名为 AmazonS3Mock 以避免 namespace 混淆

关于java - 如何模拟 S3 以在 Junit 中测试 Java 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50753358/

相关文章:

amazon-web-services - s3 :x-amz-acl with a value of "bucket-owner-full-control" do/mean? 是什么

java - Mockito 未重置

java - hibernateTemplate如何进行保存操作?

java - NoClassDefFoundError 只有一些设备,只能来自 playstore?这甚至可能吗?

java - OGNL 语法问题

java - REST 中元素的编码列表

javascript - 循环另一个文件中的字符串的最佳方法?

ruby-on-rails - ArgumentError(缺少必需的 :bucket option):

java - 如何使用easymock/powermock模拟对象响应带参数的方法

Java:无法重绘()?