Dynamodb Local을 사용한 향상된 Dynamodb 및 통합 테스트
이 게시물에서는 Enhanced Dynamo Client을 사용하여 일반 DynamoDBService 클래스를 구현하는 방법과 Downloadable DynamoDb을 사용하여 단위/통합 테스트 사례를 작성하는 방법을 설명합니다.
전체 소스 코드는 다음repo에서 찾을 수 있습니다.
이 예제를 빌드하기 위해 다음 링크와 github repos를 사용했습니다.
전제 조건
Gradle에서 향상된 클라이언트 설정
Gradle에서 고급 클라이언트를 설정하려면 다음 종속성을 추가해야 합니다.
implementation 'com.amazonaws:aws-java-sdk-dynamodb:1.11.434'
implementation 'software.amazon.awssdk:dynamodb:2.17.28'
implementation 'software.amazon.awssdk:dynamodb-enhanced:2.17.28'
DynamoDb 로컬 설정
Aws 설명서에서는 설정 단계maven build를 제공하지만 Gradle 설정은 AWS에서 제공하지 않으며 이 라이브러리는 중앙 Maven 저장소에서 사용할 수 없으므로 DynamoDb Local을 설정하려면 사용자가 aws maven 저장소를 설정해야 합니다.
repositories {
maven {
name
url "https://s3-us-west-2.amazonaws.com/dynamodb-local/release"
}
}
다음 종속성은 DynamoDbLocal을 Gradle 프로젝트에 추가합니다.
testImplementation group: 'com.amazonaws', name: 'DynamoDBLocal', version: '1.11.119'
https://github.com/redskap/aws-dynamodb-java-example-local-testing/blob/master/README.md에서 설정에 대한 자세한 정보를 찾을 수 있습니다. JUnit 테스트 클래스의 설정 기능 중 테스트 설정 복사AwsDynamoDbLocalTestUtils 및 호출AwsDynamoDbLocalTestUtils#initSqLite()의 일부로
DynamoDb 도메인 POJO
이 클래스는 Dynamo DB 스키마의 POJO 표현입니다. 저는 Getter 및 Setter 메서드의 보일러 도금을 피하기 위해 lombok을 사용했습니다. @DynamoDbBean은 dynamo db 구조를 나타내고 @DynamoDbPartitionKey는 기본 키 ID를 나타냅니다.
@Data
@DynamoDbBean
public class Student {
private String studentId;
private String studentName;
private String department;
@DynamoDbPartitionKey
@DynamoDbAttribute("studentId")
public String getStudentId() {
return studentId;
}
}
DynamoDb 서비스 구현
이 클래스에는 전체 DAO 구현이 있습니다.
DynamoDBService.java
JUnit 테스트 클래스 설정
시작하는 동안 JUnit은 로컬 dynamo DB 인스턴스를 가동하고 다음 코드는 로컬 인스턴스에 DynamoClient 연결을 설정하는 방법을 보여줍니다.
private static final String TABLE\_NAME = "Student";
private static DynamoDBProxyServer server;
private static final String port = "8000";
private static final String uri = "http://localhost:"+port;
@BeforeEach
public void setUpTest() throws Exception {
AwsDynamoDbLocalTestUtils.initSqLite();
server = ServerRunner.createServerFromCommandLineArgs(
new String\[\]{"-inMemory", "-port", port});
server.start();
client=DynamoDbClient.builder()
.endpointOverride(URI.create(uri))
.region(Region.AF\_SOUTH\_1) .credentialsProvider(StaticCredentialsProvider.create(
AwsBasicCredentials.create("fakeMyKeyId","fakeSecretAccessKey")))
.build();
}
Reference
이 문제에 관하여(Dynamodb Local을 사용한 향상된 Dynamodb 및 통합 테스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/fazeem/enhanced-dynamo-db-and-integration-test-using-dynamo-local-4kai텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)