[java] TestNG와 Jenkins 파이프라인 통합

TestNG는 Java용 테스트 프레임워크로, 다양한 테스트 시나리오를 실행하고 관리하는 데 도움이 됩니다. Jenkins는 지속적인 통합 도구로, 코드 변경 사항이 발생할 때마다 자동으로 빌드 및 테스트를 수행할 수 있습니다. 이때 TestNG와 Jenkins를 함께 사용하면 테스트 자동화 및 통합 테스트 프로세스를 자동화할 수 있습니다.

Jenkins 설정

먼저 Jenkins를 설치하고 구성해야 합니다. Jenkins를 설치하는 방법은 다양하지만, 이 글에서는 Jenkins의 공식 웹사이트에서 제공하는 War 파일을 이용하는 방법을 다루도록 하겠습니다. War 파일을 다운로드한 후, 아래와 같이 명령어를 실행하여 Jenkins를 시작할 수 있습니다.

java -jar jenkins.war

Jenkins 파이프라인 설정

Jenkins 관리 대시보드에 접속하여 파이프라인을 설정해야 합니다. 파이프라인은 Jenkins로 실행할 작업을 정의하는 스크립트 형태로 작성됩니다. 아래는 Jenkins 파이프라인 설정을 위한 예시입니다.

pipeline {
    agent any

    stages {
        stage('Checkout') {
            steps {
                // 소스 코드 체크아웃
                git 'https://github.com/your-repo.git'
            }
        }
        
        stage('Build') {
            steps {
                // Maven을 이용한 빌드
                sh 'mvn clean package'
            }
        }

        stage('Test') {
            steps {
                // TestNG 테스트 실행
                sh 'mvn test'
            }
        }

        stage('Publish') {
            steps {
                // 테스트 리포트를 Jenkins에 퍼블리시
                publishHTML(target: [
                    allowMissing: false,
                    alwaysLinkToLastBuild: true,
                    keepAll: true,
                    reportDir: 'target/surefire-reports',
                    reportFiles: 'index.html',
                    reportName: 'Test Report'
                ])
            }
        }
    }
}

위의 예시는 간단한 Jenkins 파이프라인 스크립트입니다. 소스 코드 체크아웃, 빌드, 테스트, 그리고 테스트 리포트 퍼블리싱 단계로 구성되어 있습니다.

TestNG 설정

TestNG를 사용하여 테스트를 작성해야 합니다. TestNG는 테스트 클래스 및 테스트 메서드를 정의하고 실행하는 데 사용됩니다. 아래는 TestNG를 사용한 예시입니다.

import org.testng.annotations.Test;

public class MyTest {

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

}

위의 예시는 간단한 TestNG 테스트 메서드입니다. @Test 어노테이션으로 테스트 메서드를 정의하고, 원하는 테스트 로직을 작성하면 됩니다.

Jenkins와 TestNG 연동

Jenkins 파이프라인에서 TestNG 테스트를 실행하기 위해 Maven을 사용할 수 있습니다. Jenkins는 Maven을 통해 프로젝트를 빌드하고 테스트를 실행할 수 있습니다. 위의 파이프라인 설정 예시에서 mvn test 명령어를 이용하여 TestNG 테스트를 실행하고 있습니다.

또한 Jenkins는 TestNG 테스트 리포트를 퍼블리시 할 수 있습니다. 위의 파이프라인 설정 예시에서는 publishHTML 스텝을 통해 테스트 리포트를 Jenkins에 퍼블리시 하고 있습니다.

결론

TestNG와 Jenkins를 파이프라인으로 통합하여 테스트 자동화 및 통합 테스트 프로세스를 자동화할 수 있습니다. Jenkins 파이프라인을 설정하고 TestNG 테스트를 작성한 후, Jenkins와 TestNG를 연동하여 테스트를 실행하고 리포트를 분석할 수 있습니다.

참고자료