TestContainers는 테스트 환경에서 도커 컨테이너를 사용하여 외부 의존성을 가진 서비스를 통합 테스트할 수 있는 도구입니다. 이번 글에서는 TestContainers를 사용하여 AWS EC2 인스턴스를 테스트하는 방법에 대해 알아보겠습니다.
1. TestContainers 설치하기
Maven을 사용하는 경우, pom.xml
파일에 다음 의존성을 추가합니다.
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers</artifactId>
<version>1.15.0</version>
<scope>test</scope>
</dependency>
Gradle을 사용하는 경우, build.gradle
파일에 다음 의존성을 추가합니다.
testImplementation 'org.testcontainers:testcontainers:1.15.0'
2. AWS EC2 테스트 환경 설정하기
AWS EC2 인스턴스를 테스트하기 위해선, AWS SDK를 사용하여 인스턴스를 시작하고 종료하는 로직을 작성해야합니다. TestContainers는 AWS SDK를 사용하여 EC2 인스턴스를 관리합니다.
@Testcontainers
class EC2IntegrationTest {
@Container
private static final EC2Container EC2_CONTAINER = new EC2Container()
.withImageId("ami-12345678") // 시작할 EC2 인스턴스의 AMI ID를 입력하세요.
.withInstanceType(InstanceType.T2_MEDIUM) // 인스턴스 유형을 선택하세요.
.withSecurityGroups("my-security-group") // 보안 그룹 설정
.withKeyName("my-keypair") // 키 페어 설정
.withUserData("echo 'Hello, TestContainers!'") // User Data 설정
.withPortBindings(8080) // 포트 바인딩 설정
.withEnv("ENV", "test"); // 환경 변수 설정
@Test
void testEC2Instance() {
// EC2 인스턴스의 테스트 로직 작성
// 예: HTTP 요청을 보내고 응답 확인
}
}
위의 코드에서 EC2Container
는 TestContainers가 제공하는 EC2 테스트용 컨테이너입니다. 필요한 설정을 추가하여 EC2 인스턴스를 시작할 수 있습니다. 테스트 메서드에서는 EC2 인스턴스에 대한 테스트 로직을 작성할 수 있습니다.
3. 테스트 실행하기
테스트를 실행하기 전에, AWS 인증 정보를 환경 변수로 설정해야합니다. AWS 관리 콘솔에서 액세스 키와 시크릿 키를 생성한 후, 다음과 같이 환경 변수를 설정합니다.
export AWS_ACCESS_KEY_ID=<your-access-key-id>
export AWS_SECRET_ACCESS_KEY=<your-secret-access-key>
테스트 클래스에 @Testcontainers
어노테이션을 추가하여 TestContainers의 컨테이너가 실행되도록 합니다. 그 후, 테스트를 실행하면 TestContainers가 자동으로 EC2 인스턴스를 시작하고 테스트를 진행합니다.
$ mvn clean test
결론
TestContainers를 사용하여 AWS EC2 인스턴스를 테스트할 수 있습니다. 이를 통해 외부 의존성을 가진 서비스를 포함한 통합테스트를 간단하게 구성할 수 있습니다.
더 자세한 내용은 TestContainers 공식 문서를 참고하세요.