Flyway는 데이터베이스 마이그레이션 도구로서, 개발자가 애플리케이션의 데이터베이스 스키마를 관리하고 업데이트하는 데 도움을 줍니다. Flyway를 사용하면 테스트 데이터베이스에 초기 데이터를 쉽게 추가할 수 있습니다. 이 글에서는 Flyway를 사용하여 Java 애플리케이션의 데이터베이스에 테스트 데이터를 생성하는 방법에 대해 알아보겠습니다.
Flyway 설정
Flyway를 사용하려면 먼저 프로젝트에 Flyway를 추가해야 합니다. Maven을 사용하는 경우, pom.xml
파일에 다음과 같은 의존성을 추가합니다:
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>6.4.4</version>
</dependency>
Gradle을 사용하는 경우, build.gradle
파일에 다음과 같은 의존성을 추가합니다:
dependencies {
implementation 'org.flywaydb:flyway-core:6.4.4'
}
Flyway를 프로젝트에 추가한 후, 데이터베이스 연결 정보를 application.properties
파일에 설정해야 합니다. 다음은 H2 데이터베이스를 사용하는 예시입니다:
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.flyway.locations=classpath:db/migration
위 설정에서 spring.flyway.locations
는 Flyway 마이그레이션 스크립트(.sql 파일)를 위치시킬 폴더를 지정합니다. 여기서는 src/main/resources/db/migration
폴더를 사용합니다.
테스트 데이터 추가
테스트 데이터는 Flyway 마이그레이션 스크립트를 생성하여 데이터베이스에 추가할 수 있습니다. 마이그레이션 스크립트의 이름은 V<버전>__<설명>.sql
형식을 따라야 합니다. <버전>
은 스크립트의 순서와 관련된 숫자이고, <설명>
은 마이그레이션 스크립트의 목적을 나타내는 문자열입니다.
예를 들어, V1__insert_test_data.sql
파일을 생성하여 다음과 같은 SQL 스크립트를 작성할 수 있습니다:
INSERT INTO users (id, name, email) VALUES (1, 'Alice', 'alice@example.com');
INSERT INTO users (id, name, email) VALUES (2, 'Bob', 'bob@example.com');
위 스크립트는 users
테이블에 두 개의 테스트 사용자를 추가합니다. Flyway는 자동으로 해당 스크립트를 실행하여 데이터베이스에 테스트 데이터를 추가합니다.
테스트 실행
Flyway 설정과 테스트 데이터 스크립트를 작성한 후에는 애플리케이션을 실행하여 Flyway가 테스트 데이터를 데이터베이스에 추가하는지 확인할 수 있습니다.
@SpringBootTest
@AutoConfigureTestDatabase
public class DatabaseTest {
@Test
public void testInsertTestData() {
// Test your application logic here
// ...
}
}
위 코드는 Spring Boot 프레임워크를 사용하여 테스트를 실행하는 예시입니다. Flyway는 애플리케이션을 실행할 때 자동으로 마이그레이션 스크립트를 실행하므로, testInsertTestData()
메소드를 실행할 때 테스트 데이터가 이미 데이터베이스에 추가되어 있을 것입니다.
이제 Flyway를 사용하여 Java 애플리케이션의 데이터베이스로 테스트 데이터를 생성하는 방법에 대해 알아보았습니다. Flyway는 개발자가 데이터베이스 스키마를 관리하고 초기 데이터를 관리하는데 매우 유용한 도구입니다.