[java] JUnit으로 데이터베이스 테스트하기

JUnit은 자바에서 유닛 테스트를 수행하는 데 일반적으로 사용되는 프레임워크입니다. 이번 글에서는 JUnit을 사용하여 데이터베이스를 테스트하는 방법을 알아보겠습니다.

1. 의존성 추가하기

JUnit을 사용하기 위해 먼저 프로젝트에 의존성을 추가해야 합니다. pom.xml 파일에 다음과 같이 의존성을 추가합니다.

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>

2. 데이터베이스 연결 설정하기

데이터베이스와 연결하기 위해 JDBC 드라이버가 필요합니다. 데이터베이스 종류에 따라 해당 드라이버를 선택하고, 해당 드라이버를 프로젝트에 추가해야 합니다.

Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_name", "username", "password");

위 코드에서 com.mysql.jdbc.Driver는 MySQL 데이터베이스에 대한 JDBC 드라이버입니다. localhost:3306/db_name은 데이터베이스의 주소와 이름을 나타냅니다. usernamepassword는 데이터베이스에 연결하기 위한 사용자의 정보입니다. 이 부분을 실제 데이터베이스의 정보로 수정해야 합니다.

3. 테스트 작성하기

JUnit으로 데이터베이스를 테스트할 때는 @Test 어노테이션을 사용하여 테스트 메소드를 정의합니다. 아래는 간단한 예시 코드입니다.

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

import static org.junit.Assert.assertEquals;

public class DatabaseTest {

    private Connection connection;

    @Before
    public void setUp() throws Exception {
        // 테스트 전에 실행할 설정
        Class.forName("com.mysql.jdbc.Driver");
        connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_name", "username", "password");
    }

    @After
    public void tearDown() throws SQLException {
        // 테스트 후에 실행할 설정
        connection.close();
    }

    @Test
    public void testInsertData() throws SQLException {
        // 데이터 삽입 테스트
        Statement statement = connection.createStatement();
        int result = statement.executeUpdate("INSERT INTO users (name, age) VALUES ('John Doe', 25)");
        assertEquals(1, result);
    }

    @Test
    public void testFetchData() throws SQLException {
        // 데이터 조회 테스트
        Statement statement = connection.createStatement();
        String query = "SELECT name, age FROM users WHERE age > 20";
        ResultSet resultSet = statement.executeQuery(query);
        int count = 0;
        while (resultSet.next()) {
            count++;
        }
        assertEquals(1, count);
    }
}

위 코드에서 @Before 어노테이션이 부착된 setUp 메소드는 각 테스트 메소드가 실행되기 전에 실행되는 초기화 코드를 포함하고 있습니다. 마찬가지로 @After 어노테이션이 부착된 tearDown 메소드는 각 테스트 메소드가 실행된 후에 실행되는 종료 코드를 포함하고 있습니다.

@Test 어노테이션을 부착한 메소드가 실제로 테스트를 수행하는 코드입니다. 위 예시에서는 testInsertData 메소드에서 데이터 삽입을 테스트하고, testFetchData 메소드에서 데이터 조회를 테스트합니다. assertEquals를 사용하여 예상 결과와 실제 결과를 비교합니다.

4. 테스트 실행하기

JUnit으로 작성한 테스트를 실행하기 위해 IDE에서는 해당 테스트 클래스를 마우스 오른쪽 버튼으로 클릭하여 “Run as JUnit Test”를 선택하면 됩니다. 또는 Maven을 사용하여 테스트를 실행할 수도 있습니다. Maven 명령어 mvn test를 실행하면 JUnit 테스트가 실행됩니다.

5. 참고 자료