[java] Maven을 사용하여 테스트 커버리지 측정하기

효과적인 테스트 커버리지 측정은 소프트웨어 개발에서 중요한 부분입니다. 이는 코드의 얼마나 많은 부분이 테스트되었는지를 확인하여 버그를 발견하고 수정하는 데 도움이 됩니다. Maven은 빌드 도구로 사용되는 동시에 다양한 테스트 커버리지 도구와 통합하여 커버리지 측정을 쉽게 할 수 있도록 해줍니다.

Maven 설정

먼저, Maven 프로젝트에서 테스트 커버리지를 측정하기 위해 프로젝트의 pom.xml 파일에 다음과 같은 의존성을 추가해야 합니다.

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.22.0</version>
      <configuration>
        <argLine>-javaagent:${settings.localRepository}/org/jacoco/org.jacoco.agent/0.8.6/org.jacoco.agent-0.8.6-runtime.jar=destfile=${project.build.directory}/jacoco.exec</argLine>
      </configuration>
    </plugin>
    <plugin>
      <groupId>org.jacoco</groupId>
      <artifactId>jacoco-maven-plugin</artifactId>
      <version>0.8.6</version>
      <executions>
        <execution>
          <id>jacoco-initialize</id>
          <goals>
            <goal>prepare-agent</goal>
          </goals>
        </execution>
        <execution>
          <id>jacoco-report</id>
          <phase>test</phase>
          <goals>
            <goal>report</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

위의 설정은 Maven Surefire 플러그인과 JaCoCo 플러그인을 사용하여 테스트 커버리지를 측정하기 위한 설정입니다. argLine 속성에서는 JaCoCo 에이전트를 사용하여 테스트 중인 코드의 커버리지 정보를 수집하고, 수집된 정보를 jacoco.exec 파일에 저장하도록 설정합니다.

테스트 실행 및 커버리지 측정

프로젝트의 테스트를 실행하고 커버리지를 측정하기 위해서는 다음의 Maven 명령어를 실행합니다.

$ mvn clean test

위 명령어를 실행하면 테스트가 실행되고, JaCoCo 플러그인에 의해 코드 커버리지 정보가 수집됩니다. 수집된 정보는 target/jacoco-ut 디렉토리에 생성된 HTML 보고서를 통해 확인할 수 있습니다.

커버리지 보고서 확인

target/jacoco-ut 디렉토리에 생성된 HTML 보고서를 열어서 테스트 커버리지 정보를 확인할 수 있습니다. 이 보고서에서는 각각의 클래스와 메서드별로 얼마만큼의 코드가 실행되었는지, 커버리지 비율 등의 정보를 확인할 수 있습니다. 이를 통해 어느 부분이 더 테스트가 필요한지 식별하고, 테스트를 추가로 작성할 수 있습니다.

결론

Maven을 사용하여 테스트 커버리지를 측정하는 방법을 알아보았습니다. 효과적인 테스트 커버리지 측정은 소프트웨어 개발에서 버그를 예방하고 개선하기 위해 매우 중요한 단계입니다. Maven과 JaCoCo를 사용하여 손쉽게 테스트 커버리지를 측정하고 분석할 수 있으니, 프로젝트에 테스트 커버리지 측정을 도입해 보세요.

참고 자료