소개
테스트 컨테이너(TestContainers)는 도커(Docker) 환경을 사용하여 테스트를 실행하는 도구입니다. 이를 통해 테스트 환경을 쉽게 설정하고, 테스트 실행 시 실제 환경과 동일한 컨테이너 환경에서 테스트 코드를 실행할 수 있습니다.
JaCoCo는 자바 코드의 테스트 커버리지(Test Coverage) 측정을 위한 라이브러리입니다. 이를 통해 테스트가 얼마나 코드를 커버하는지 분석할 수 있으며, 효과적인 테스트를 작성할 수 있습니다.
이번 글에서는 TestContainers와 JaCoCo를 함께 사용하여 테스트 커버리지를 측정하는 방법을 소개하겠습니다.
설정
먼저, TestContainers를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우, 다음과 같이 의존성을 추가할 수 있습니다:
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers</artifactId>
<version>1.15.3</version>
<scope>test</scope>
</dependency>
JaCoCo도 마찬가지로 추가해야 합니다. 다음과 같이 의존성을 추가할 수 있습니다:
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.6</version>
<executions>
<execution>
<id>jacoco-pre-test</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<propertyName>jacocoArgLine</propertyName>
</configuration>
</execution>
<execution>
<id>jacoco-post-test</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</dependency>
테스트
테스트 클래스에는 @Testcontainers
어노테이션을 추가하여 TestContainers와 JaCoCo를 연동할 수 있습니다. 또한, JacocoCoverageHelper
클래스를 사용하여 코드 커버리지 측정을 자동으로 처리할 수 있습니다.
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
import org.testcontainers.containers.MySQLContainer;
import org.testcontainers.junit.jupiter.Testcontainers;
@Testcontainers
public class MyUnitTest {
// TestContainers를 위한 컨테이너 변수
@RegisterExtension
public static MySQLContainer<?> mysqlContainer = new MySQLContainer<>("mysql:8.0.26");
// JaCoCo를 위한 코드 커버리지 측정 변수
// 테스트 포함 전체 코드 커버리지 측정을 위해 "test" 대신 "integrationTest" 사용
@RegisterExtension
static final JacocoCoverageHelper jacoco = new JacocoCoverageHelper("integrationTest");
@Test
void myTest() {
// 테스트 코드 작성
}
}
위의 코드에서 생성한 JacocoCoverageHelper
클래스는 코드 커버리지 측정을 위해 필요한 설정을 자동으로 처리해줍니다. 이를 통해 테스트 실행 시 JaCoCo 보고서를 생성할 수 있습니다.
보고서 확인
Jacoco를 사용하여 코드 커버리지를 측정하는 경우, mvn test
명령을 통해 테스트를 실행하고 커버리지 보고서를 확인할 수 있습니다. 아래 명령을 실행해보세요:
mvn clean test
Jacoco 보고서는 target/site/jacoco/index.html
경로에 생성됩니다. 해당 경로에서 보고서를 열어 테스트 커버리지에 대한 정보를 확인할 수 있습니다.
결론
TestContainers와 JaCoCo를 함께 사용하여 테스트 커버리지를 측정하는 방법을 알아보았습니다. 이를 통해 테스트 환경을 쉽게 설정하고 효율적인 테스트를 작성할 수 있습니다. 보다 정확하고 안정적인 코드 커버리지 측정을 위해 TestContainers와 JaCoCo를 활용해보세요.