2017-04-06 2 views
0

나는이 질문에 관한 해답을 사용했지만 계속 진행할 수 있을지 확신이 없으며 jacoco가 이것을 지원하는지 확인하고 싶다. 나는 멀티 모듈 받는다는 프로젝트를하고 난 통합 테스트를위한 오이 사용하고 있습니다 :Jacoco + Cucumber + Maven setup

<modules> 
    <module>a</module> 
    <module>b</module> 
    <module>c</module> 
</modules> 

    <profiles> 
    <profile> 
     <id>env-local</id> 
     <modules> 
      <module>acceptance-tests</module> 
     </modules> 
    </profile> 

수용-테스트 모듈이 부모 치어하지만 수용 - 테스트 pom.xml 파일의 태그에 정의되지 않은이 같은 부모가 정의했습니다 나머지 모듈들도 마찬가지입니다.

문제는 모든 통합 테스트가 수락 테스트에 있다는 것입니다. 나는이 모듈에 src/main/java 폴더조차 갖고 있지 않다. 발견 된 예제의 대부분은 각 모듈에서 수용 테스트를 받았으며 해당 모듈에 속한 코드에 대해 적용 범위가 생성됩니다.

다른 경우에도 사용되는 모든 클래스가 포함 된 보고서를 생성해야합니다. 나는 또한 이것을 할 수 있었지만 '첫 번째 수준'에 대해서만 적용 범위를 찾을 수 있습니다 : 클래스가 spb-acceptance에서 직접 사용되는 경우 보고서에 포함되지만 사용되는 클래스에 대한 정보를 찾을 수 없습니다 간접적으로

jacoco로 이런 종류의 보상 범위를 달성 할 수 있습니까?

감사합니다.

답변

0

문제는 Maven이 프로젝트를 빌드 할 때 깊이 우선 접근 방식을 사용한다는 것입니다. 즉, 다음 모듈로 이동하기 전에 모듈에서 모든 것을 완료합니다.

결과 수집

  • 제조 클래스가 실행되도록 코드 커버리지
  • 시험을 측정 할 수있는 계측 도착
  • 제조 클래스를 컴파일 얻고 사용량
  • 사용 결과 기록된다는 것이다
  • 다음 모듈로 반복하십시오.

이것은 깨지는 부분입니다. 이전 모듈에 종속 된 새 모듈은 생성 된 종속성을 사용합니다. 이제 로컬 Maven 캐시에 캐시 된 jar입니다. 항아리의 클래스는 계측되지 않으며 사용법이 기록되지 않습니다.

내가 사용한 해결책은

  • 악기 코드 모든 코드 컴파일입니다
  • 가 통합 모든 테스트를 실행하고 나는 blog post 쓰기 보고서를

를 구축 약 2 년 전.

+0

주말에 살펴보고이 솔루션을 적용 할 수 있는지 확인합니다. 답장을 보내 주셔서 감사합니다. 적어도 지금 무슨 일이 일어나고 있는지 알고 있습니다. –

0

문제는 jacoco-it.exec 파일을 다시 사용하지 않는 것이 었습니다.내가 모듈을했을 때 그것은 작동하지만, 서브 모듈을 위해 모듈의 대상에 가고 있었다 그것은

<modules> 
    <module>a</module> 
    <module>b</module> 
    <module>c</module> 
</modules> 

그래서 그 모듈 자체를 가지고 있지 않은 모듈에 대한 범위를 계산 파일을 다시 사용할 수 있습니다. b에 b1과 b2가있는 경우,이 항목 $ {project.basedir} /../ target/jacoco-it.exec for sonar.jacoco.itReportPath를 사용하여 대상이 아닌 b의 대상에서 파일을 찾고있었습니다 메인 폼의