2014-11-13 2 views
2

maven 다중 모듈 프로젝트가 있습니다.별도의 테스트 모듈이있는 Maven 다중 모듈 프로젝트 - 코드 커버리지?

root: 
    moduleA/ # no unit tests 
    moduleB/ # no unit tests 
    moduleC/ # no unit tests 
    tests/  # All unit tests, since depends on modules A, B and C 

모든 테스트는 tests /라고하는 단일 모듈로되어 있으며 모든 코드는 별도의 모듈에 있습니다.

코드 커버리지를 얻을 수있는 방법이 있습니까?

+0

단위 테스트는 정의에 따라 적절한 모듈에 국한되며 separte 모듈에 추출되지 않습니다. 따라서 별도의 단위 테스트 모듈에 대한 설정이 의미가 없습니다. Maven의 의도는 동일한 모듈 내에서 생산 코드와 적절한 단위 테스트를 갖는 것입니다. 폴더 구조가'src/main/java' 생산 코드를 보여주기 때문에. 'src/test/java' 단위 테스트 코드. – khmarbaise

+0

테스트 모듈을 통합 테스트를위한 위치로 생각할 때 이것이 유효한 설정이라고 생각합니다. 지금은 jacoco가 이것을 지원하지 않는 것 같아요, 당신이 정말로 이것을 할 기분에 있다면 Sonar를 시도 할 수 있습니다. 그렇지 않으면 Jacoco의 다음 버전을 기다려야합니다. 실제로 지원할 수도 있습니다. D (https://github.com/jacoco/jacoco/pull/97) – AMilassin

+0

통합 테스트에 대해 이야기하고 있지만 여기는 문제. – khmarbaise

답변

0

jacoco 또는 cobertura 중 하나가 모듈 전체에서 코드 적용 범위를보고 할 수 있다고 생각하지 않습니다. 컴파일 된 클래스 에서 실행하기 전에 직접 테스트 도구를 사용하는 대신 테스트 커버리지 보고서를 실행 해보십시오.

오프라인 계측을 수행하려면 jacoco maven goal을 참조하십시오.

+0

jacoco에서는 계측을 필요로하지 않으므로 그에 따라 구성 할 수있는 에이전트가 있습니다. – khmarbaise

2

이렇게하는 방법이 있습니다. 마법은 결합 된 jacoco.exec 파일을 작성하고 두 단계로 수행하는 것입니다. 내 치어 :

<properties> 
    ... 
    <jacoco.overall.exec>${maven.multiModuleProjectDirectory}/target/jacoco_analysis/jacoco.exec</jacoco.overall.exec> 
</properties> 

<build> 
    <pluginManagement> 
     <plugins> 

      ... 

      <plugin> 
       <groupId>org.jacoco</groupId> 
       <artifactId>jacoco-maven-plugin</artifactId> 
       <version>0.7.8</version> 
       <configuration> 
        <destFile>${jacoco.overall.exec}</destFile> 
        <dataFile>${jacoco.overall.exec}</dataFile> 
       </configuration> 
      </plugin> 

      ... 

     </plugins> 
    </pluginManagement> 
</build> 

<profiles> 
    <profile> 
     <id>runTestWithJacoco</id> 
     <activation> 
      <property> 
       <name>runTestWithJacoco</name> 
       <value>true</value> 
      </property> 
     </activation> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.jacoco</groupId> 
        <artifactId>jacoco-maven-plugin</artifactId> 
        <executions> 
         <execution> 
          <id>default-prepare-agent</id> 
          <goals> 
           <goal>prepare-agent</goal> 
          </goals> 
          <configuration> 
           <append>true</append> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
    <profile> 
     <id>createJacocoReport</id> 
     <activation> 
      <property> 
       <name>createJacocoReport</name> 
       <value>true</value> 
      </property> 
     </activation> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.jacoco</groupId> 
        <artifactId>jacoco-maven-plugin</artifactId> 
        <executions> 
         <execution> 
          <id>default-report</id> 
          <phase>validate</phase> 
          <goals> 
           <goal>report</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 

은 부모 치어이 추가 및 mvn clean install -DrunTestWithJacocomvn validate -DcreateJacocoReport보다 실행합니다. 이제는 수업을 완전하게 다룰 수 있었고 어떤 시험이 해당되는지는 중요하지 않습니다. 마법은 maven.multiModuleProjectDirectory을 사용하여 결합 된 jacoco.exec 파일을 만드는 것입니다. 이 속성은 Maven 3.3.1부터 사용 가능하며, Maven 빌드를 시작한 폴더를 가리킨다.

관련 문제