TestNG는 자바 기반의 테스트 프레임워크로, 멀티 모듈 프로젝트에서의 테스트를 효과적으로 수행할 수 있습니다. 이번 글에서는 TestNG를 사용하여 멀티 모듈 프로젝트를 테스트하는 방법에 대해 알아보겠습니다.
1. TestNG 설정
먼저, 프로젝트 내에 TestNG를 추가하고 설정해야 합니다. 프로젝트의 pom.xml
파일에 다음과 같은 의존성을 추가합니다:
<dependencies>
<!-- TestNG -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.3.0</version>
<scope>test</scope>
</dependency>
</dependencies>
또한, TestNG의 실행을 위해 testng.xml
파일을 프로젝트 내에 생성해야 합니다. testng.xml
파일은 테스트 수행에 필요한 설정 정보를 포함하고 있습니다.
2. 멀티 모듈 프로젝트 구조
멀티 모듈 프로젝트의 구조는 다음과 같이 설정될 수 있습니다:
- parent-module
- module1
- module2
parent-module
은 부모 모듈로, module1
과 module2
는 자식 모듈입니다. 각 모듈은 독립적으로 테스트될 수 있는 기능을 제공합니다.
3. 테스트 클래스 작성
각 모듈에 대해 테스트를 수행하기 위해 테스트 클래스를 작성해야 합니다. 이때, parent-module
에서는 모든 자식 모듈의 테스트를 수행하는 TestNG 그룹을 정의해야 합니다.
package com.example.tests;
import org.testng.annotations.Test;
public class Module1Test {
@Test(groups = "module1")
public void testModule1() {
// 테스트 수행 로직
}
}
package com.example.tests;
import org.testng.annotations.Test;
public class Module2Test {
@Test(groups = "module2")
public void testModule2() {
// 테스트 수행 로직
}
}
4. 테스트 실행
parent-module
에서는 testng.xml
파일을 이용하여 자식 모듈의 테스트를 제어할 수 있습니다. testng.xml
파일에는 다음과 같이 테스트 그룹을 정의할 수 있습니다:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Multi Module Test Suite" verbose="1">
<test name="Module1 Tests">
<groups>
<run>
<include name="module1"/>
</run>
</groups>
<packages>
<package name="com.example.tests"/>
</packages>
</test>
<test name="Module2 Tests">
<groups>
<run>
<include name="module2"/>
</run>
</groups>
<packages>
<package name="com.example.tests"/>
</packages>
</test>
</suite>
testng.xml
파일에서는 각 테스트 그룹에 해당하는 모듈의 테스트를 수행할 수 있으며, 필요에 따라 다른 설정들을 추가할 수 있습니다.
5. 테스트 실행 결과 분석
테스트를 실행하고 나면, TestNG는 테스트 결과를 제공합니다. 이를 통해 각 모듈의 테스트가 성공적으로 수행되었는지 확인할 수 있습니다. 또한, 테스트 실행 결과를 보고서로 생성하여 관리할 수도 있습니다.
6. 결론
TestNG를 활용하여 멀티 모듈 프로젝트의 테스트를 효과적으로 관리할 수 있습니다. TestNG는 유연한 설정과 강력한 테스트 기능을 제공하여 테스트 작업을 간편하게 만들어줍니다.
참고 자료
- TestNG 공식 문서: https://testng.org/doc/
- TestNG 실습 예제: https://github.com/testng-team/testng-examples