[java] JUnit과 커버리지 리포트 생성

JUnit은 Java 언어로 작성된 소프트웨어의 단위 테스트를 위해 사용되는 프레임워크입니다. 단위 테스트를 작성하고 실행함으로써 코드의 오류를 발견하고 디버깅하는 데 도움이 됩니다. 또한, 커버리지 리포트를 생성하여 테스트 스위트의 코드 커버리지를 확인할 수도 있습니다.

이번 블로그에서는 JUnit과 커버리지 리포트 생성에 대해 자세히 알아보겠습니다.

JUnit 사용하기

JUnit을 사용하기 위해서는 다음과 같은 단계를 따라야 합니다:

  1. JUnit 프레임워크를 프로젝트에 추가합니다. 이를 위해 Maven이나 Gradle 같은 빌드 관리 도구를 사용할 수 있습니다.

     <dependencies>
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <version>4.12</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
    

    또는 Gradle을 사용하여 다음과 같이 의존성을 추가할 수도 있습니다:

     testImplementation 'junit:junit:4.12'
    
  2. JUnit 테스트 케이스를 작성합니다. 테스트 케이스는 @Test 어노테이션이 있는 메소드로 구성됩니다. 이 메소드들은 테스트할 기능을 구현하고 테스트 결과를 확인하는 코드를 포함해야 합니다.

     import org.junit.Test;
     import static org.junit.Assert.*;
    
     public class MyUnitTest {
        
         @Test
         public void testAddition() {
             int result = Calculator.add(2, 2);
             assertEquals(4, result);
         }
     }
    
  3. JUnit 테스트 실행하기 위해 IDE나 빌드 도구에서 테스트를 실행합니다. 실행 결과는 성공 혹은 실패로 나타납니다.

커버리지 리포트 생성하기

코드 커버리지는 테스트 스위트에서 실행된 코드의 비율을 측정하는 데 사용됩니다. 이를 통해 테스트의 품질과 완성도를 판단할 수 있습니다. JaCoCo와 Cobertura 같은 도구를 사용하여 커버리지 리포트를 생성할 수 있습니다.

JaCoCo

JaCoCo는 Java 코드의 테스트 커버리지 리포트를 생성하는 도구입니다. 다음과 같은 단계로 JaCoCo를 사용하여 커버리지 리포트를 생성할 수 있습니다:

  1. JaCoCo 플러그인을 빌드 도구에 추가합니다. 예를 들어, Maven을 사용한다면 pom.xml 파일에 다음과 같은 플러그인을 추가합니다:

     <build>
         <plugins>
             <!-- JaCoCo 플러그인 -->
             <plugin>
                 <groupId>org.jacoco</groupId>
                 <artifactId>jacoco-maven-plugin</artifactId>
                 <version>0.8.7</version>
                 <executions>
                     <execution>
                         <goals>
                             <goal>prepare-agent</goal>
                         </goals>
                     </execution>
                     <execution>
                         <id>report</id>
                         <phase>prepare-package</phase>
                         <goals>
                             <goal>report</goal>
                         </goals>
                     </execution>
                 </executions>
             </plugin>
         </plugins>
     </build>
    

    빌드 도구에 따라 세부 설정이 달라질 수 있습니다. 자세한 내용은 각 도구의 문서를 참조하세요.

  2. 테스트할 코드에 대해 JaCoCo를 활성화합니다. 이를 위해 pom.xml에서 argLine 속성을 수정하여 JaCoCo 에이전트를 사용하도록 설정합니다.

     <build>
         <plugins>
             <plugin>
                 <groupId>org.jacoco</groupId>
                 <artifactId>jacoco-maven-plugin</artifactId>
                 <version>0.8.7</version>
                 <executions>
                     <execution>
                         <goals>
                             <goal>prepare-agent</goal>
                         </goals>
                         <configuration>
                             <propertyName>jacoco.agent.argLine</propertyName>
                         </configuration>
                     </execution>
                 </executions>
                 <configuration>
                     <systemPropertyVariables>
                         <jacoco-agent.destfile>${project.build.directory}/jacoco.exec</jacoco-agent.destfile>
                     </systemPropertyVariables>
                 </configuration>
             </plugin>
         </plugins>
     </build>
    
  3. 빌드 도구를 사용하여 테스트를 실행하고 JaCoCo 보고서를 생성합니다. 예를 들어, Maven을 사용한다면 다음 명령을 실행합니다:

     mvn clean install
    

    실행을 완료하면 target/site/jacoco/ 디렉토리 안에 HTML 포맷의 JaCoCo 보고서가 생성됩니다. 이를 열어서 코드 커버리지를 확인할 수 있습니다.

Cobertura

Cobertura는 Java 코드의 테스트 커버리지 리포트를 생성하는 데 사용되는 도구입니다. 다음과 같은 단계로 Cobertura를 사용하여 커버리지 리포트를 생성할 수 있습니다:

  1. Cobertura 플러그인을 빌드 도구에 추가합니다. 예를 들어, Maven을 사용한다면 pom.xml 파일에 다음과 같은 플러그인을 추가합니다:

     <build>
         <plugins>
             <!-- Cobertura 플러그인 -->
             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>cobertura-maven-plugin</artifactId>
                 <version>2.7</version>
                 <configuration>
                     <formats>
                         <format>html</format>
                         <format>xml</format>
                     </formats>
                 </configuration>
                 <executions>
                     <execution>
                         <phase>test</phase>
                         <goals>
                             <goal>cobertura</goal>
                         </goals>
                     </execution>
                 </executions>
             </plugin>
         </plugins>
     </build>
    
  2. 빌드 도구를 사용하여 테스트를 실행하고 Cobertura 보고서를 생성합니다. 예를 들어, Maven을 사용한다면 다음 명령을 실행합니다:

     mvn clean test
    

    실행을 완료하면 target/site/cobertura/index.html 파일을 열어서 코드 커버리지를 확인할 수 있습니다.

결론

이번 블로그에서는 JUnit을 사용하여 Java 소프트웨어의 단위 테스트를 작성하는 방법과 코드 커버리지 리포트를 생성하는 방법에 대해 알아보았습니다. 좋은 테스트 스위트를 작성하고 커버리지를 확인함으로써 안정적이고 품질 높은 소프트웨어를 개발할 수 있습니다.

더 많은 정보를 원한다면 다음 링크를 참조하세요: