InfoGrab DocsInfoGrab Docs

Cobertura 커버리지 시각화

Cobertura XML 리포트를 사용해 머지 리퀘스트 diff 에 줄 단위 테스트 커버리지 주석을 표시하는 방법을 설명합니다.

Cobertura XML 리포트를 사용하면 머지 리퀘스트 diff에 줄 단위 커버리지 주석을 표시할 수 있습니다. GitLab은 Cobertura XML 리포트를 읽어 변경된 각 줄을 커버됨(녹색), 커버되지 않음(빨간색), 로드되었지만 실행되지 않음(주황색)으로 표시합니다. GitLab은 파이프라인의 모든 stage에 있는 모든 job의 리포트를 포함합니다. 커버리지 시각화는 artifacts:reports:coverage_report 키워드를 사용합니다. 이 기능은 MR 위젯에 커버리지 비율을 표시하거나 커버리지 히스토리 그래프를 채우지 않습니다. 커버리지 비율을 표시하려면 coverage 키워드를 별도로 설정합니다. Cobertura XML 형식은 원래 Java 용으로 개발되었지만, 대부분의 커버리지 프레임워크가 플러그인이나 내장 익스포터를 통해 이 형식을 지원합니다. simplecov-cobertura (Ruby) gocover-cobertura (Go) cobertura (Node.js) Istanbul (JavaScript) Coverage.py (Python) PHPUnit (PHP) CI/CD 설정 예시 # 다음 예시는 여러 프로그래밍 언어에서 CI/CD job을 설정하는 방법을 보여줍니다. 다음 coverage-report 데모 프로젝트에서도 실제로 동작하는 예시를 확인할 수 있습니다. JavaScript 예시 # 다음 .gitlab-ci.yml 예시는 Mocha 와 nyc 를 사용해 커버리지 아티팩트를 생성합니다. test: script: - npm install - npx nyc --reporter cobertura mocha artifacts: reports: coverage_report: coverage_format: cobertura path: coverage/cobertura-coverage.xml Java 및 Kotlin 예시 # GitLab 17.6 이상에서는 JaCoCo 형식을 네이티브로 지원합니다. 새 프로젝트에서는 네이티브 JaCoCo 리포트 를 사용합니다. 다음 예시는 jacoco2cobertura Docker 이미지를 사용해 JaCoCo 리포트를 Cobertura 형식으로 변환합니다. Maven 예시 # test-jdk11 job은 Maven 을 사용해 JaCoCo XML 아티팩트를 생성합니다. coverage-jdk11 job은 이를 Cobertura 형식으로 변환합니다. test-jdk11: stage: test image: maven:3.6.3-jdk-11 script: - mvn $MAVEN_CLI_OPTS clean org.jacoco:jacoco-maven-plugin:prepare-agent test jacoco:report artifacts: paths: - target/site/jacoco/jacoco.xml coverage-jdk11: # The `visualize` stage does not exist by default. # Define it first, or use an ex