[java] TestNG와 Docker 컨테이너를 활용한 테스트 환경 구축

효율적으로 테스트를 수행하기 위해서는 격리된 환경에서 테스트를 실행하는 것이 중요합니다. 이때, Docker 컨테이너를 사용하여 격리된 테스트 환경을 구축할 수 있습니다. 이번 포스트에서는 TestNG와 Docker 컨테이너를 함께 사용하여 테스트 환경을 구축하는 방법에 대해 알아보겠습니다.

1. Docker 컨테이너 설정

먼저, Docker를 설치하고 실행해야 합니다. Docker를 설치하는 방법은 개별 운영 체제에 따라 다를 수 있습니다.

Docker를 설치한 뒤, 테스트에 필요한 이미지를 다운로드하고 컨테이너를 생성합니다. 예를 들어, MySQL 데이터베이스를 사용해야 하는 경우 다음과 같은 명령어를 사용하여 컨테이너를 생성할 수 있습니다.

docker run -d --name=mysql-container -e MYSQL_ROOT_PASSWORD=password -p 3306:3306 mysql

위 명령어에서는 MySQL 컨테이너를 생성하고, 루트 비밀번호를 “password”로 설정하며, 포트 3306을 호스트와 컨테이너에 매핑합니다.

2. TestNG 설정

TestNG는 자바용 테스트 프레임워크로, 테스트를 스위트로 구성하고 실행할 수 있습니다. TestNG를 사용하기 위해서는 프로젝트에 TestNG 의존성을 추가해야 합니다. 의존성은 Maven을 사용하는 경우 pom.xml 파일에 추가할 수 있습니다.

<dependency>
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>
  <version>7.0.0</version>
  <scope>test</scope>
</dependency>

TestNG가 설치되었다면, testng.xml 파일을 생성하여 테스트 스위트를 구성해야 합니다. 스위트에는 테스트 클래스, 그룹 등을 설정할 수 있습니다. 예를 들어, 다음은 SampleTest 클래스를 포함한 테스트 스위트의 예입니다.

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="Sample Test Suite">
    <test name="Sample Test">
        <classes>
            <class name="com.example.SampleTest"/>
        </classes>
    </test>
</suite>

3. 테스트 환경 구축

이제 TestNG와 Docker 컨테이너를 함께 사용하여 테스트 환경을 구축합니다. TestNG는 @BeforeSuite 어노테이션을 사용하여 테스트 스위트 실행 전에 Docker 컨테이너를 시작할 수 있습니다.

import org.testng.annotations.BeforeSuite;

public class DockerSetup {

    @BeforeSuite
    public void startDockerContainer() {
        // Docker 컨테이너 시작 로직
    }
}

위 예제에서는 startDockerContainer 메서드를 사용하여 Docker 컨테이너를 시작합니다. 이 메서드는 테스트 스위트 실행 전에 실행되며, 필요한 컨테이너를 생성하고 초기화하는 로직을 구현합니다.

4. 테스트 케이스 작성

이제 실제 테스트 케이스를 작성합니다. TestNG를 사용하여 테스트 클래스를 작성할 수 있습니다. 다음은 간단한 테스트 케이스의 예입니다.

import org.testng.annotations.Test;

public class SampleTest {

    @Test
    public void testSomething() {
        // 테스트 로직 작성
    }
}

위 예제에서는 @Test 어노테이션을 사용하여 메서드를 테스트 메서드로 지정합니다. 테스트 로직은 해당 메서드에 작성하면 됩니다.

5. 테스트 실행

이제 모든 설정이 완료되었습니다. TestNG를 사용하여 테스트를 실행할 수 있습니다. 테스트를 실행하려면 TestNG 실행기를 사용하면 됩니다. Maven을 사용한다면, Maven Surefire 플러그인을 사용하여 테스트를 실행할 수 있습니다. 다음은 Maven으로 TestNG 테스트를 실행하는 예입니다.

mvn test

위 명령어를 실행하면, TestNG가 테스트 스위트를 읽고, Docker 컨테이너를 시작한 뒤, 테스트를 실행합니다.

결론

TestNG와 Docker 컨테이너를 함께 사용하여 테스트 환경을 구축하는 방법에 대해 알아보았습니다. 이를 통해 격리된 테스트 환경에서 더욱 효율적이고 안정적인 테스트를 수행할 수 있습니다. Docker 컨테이너를 사용하는 것은 다양한 환경을 간편하게 구축할 수 있다는 장점을 제공하므로, 테스트 환경 구축에 활용해 보시기 바랍니다.

참고 자료: