유닛 테스트 보고서 예시

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

Unit test reports는 다양한 언어와 패키지에 대해 생성할 수 있습니다. 이 예시들을 사용하여 귀하의 파이프라인을 구성하여 유닛 테스트 보고서를 생성하는 지침으로 활용하세요. 리스트된 언어와 패키지에 대한 유닛 테스트 보고서를 생성하도록 파이프라인을 구성하는 데 이 예시를 편집해야 할 수도 있습니다.

Ruby

다음의 job을 .gitlab-ci.yml에 사용하세요. 이것은 artifacts:paths 키워드를 포함하여 유닛 테스트 보고서 출력 파일에 대한 링크를 제공합니다.

## rspec로 JUnit 보고서 형식의 XML 파일을 생성하기 위해 https://github.com/sj26/rspec_junit_formatter를 사용하세요
ruby:
  image: ruby:3.0.4
  stage: test
  before_script:
    - apt-get update -y && apt-get install -y bundler
  script:
    - bundle install
    - bundle exec rspec --format progress --format RspecJunitFormatter --out rspec.xml
  artifacts:
    when: always
    paths:
      - rspec.xml
    reports:
      junit: rspec.xml

Go

다음과 같은 job을 .gitlab-ci.yml에 사용하세요.

## go로 JUnit 보고서 형식의 XML 파일을 생성하기 위해 https://github.com/gotestyourself/gotestsum를 사용하세요
golang:
  stage: test
  script:
    - go install gotest.tools/gotestsum@latest
    - gotestsum --junitfile report.xml --format testname
  artifacts:
    when: always
    reports:
      junit: report.xml

Java

Java에서 JUnit 보고서 형식의 XML 파일을 생성할 수 있는 몇 가지 도구들이 있습니다.

Gradle

다음 예제에서는 gradle을 사용하여 테스트 보고서를 생성합니다. 만약 다중의 테스트 태스크가 정의된 경우, gradlebuild/test-results/ 아래에 여러 디렉터리를 생성합니다. 이 경우, 다음 경로를 정의하여 glob 매칭을 활용할 수 있습니다: build/test-results/test/**/TEST-*.xml:

java:
  stage: test
  script:
    - gradle test
  artifacts:
    when: always
    reports:
      junit: build/test-results/test/**/TEST-*.xml

GitLab Runner 13.0 및 그 이후 버전에서는 **를 사용할 수 있습니다.

Maven

SurefireFailsafe 테스트 보고서를 파싱하기 위해 다음을 사용하세요.

java:
  stage: test
  script:
    - mvn verify
  artifacts:
    when: always
    reports:
      junit:
        - target/surefire-reports/TEST-*.xml
        - target/failsafe-reports/TEST-*.xml

Python 예시

이 예제는 pytest와 --junitxml=report.xml 플래그를 사용하여 결과를 JUnit 보고서 XML 형식으로 포맷합니다:

pytest:
  stage: test
  script:
    - pytest --junitxml=report.xml
  artifacts:
    when: always
    reports:
      junit: report.xml

C/C++

C/C++에서 JUnit 보고서 형식의 XML 파일을 생성할 수 있는 몇 가지 도구들이 있습니다.

GoogleTest

다음 예제에서는 gtest을 사용하여 테스트 보고서를 생성합니다. 만약 서로 다른 아키텍처(x86, x64 또는 arm)에 대해 여러 gtest 실행 파일이 생성된 경우, 각 테스트를 실행하여 고유한 파일 이름을 제공해야 합니다. 그 결과는 그 후 함께 집계됩니다.

cpp:
  stage: test
  script:
    - gtest.exe --gtest_output="xml:report.xml"
  artifacts:
    when: always
    reports:
      junit: report.xml

CUnit

CUnit을 사용하여 실행 시 CUnitCI.h 매크로를 활용하여 자동으로 JUnit 보고서 형식의 XML 파일을 생성할 수 있습니다.

cunit:
  stage: test
  script:
    - ./my-cunit-test
  artifacts:
    when: always
    reports:
      junit: ./my-cunit-test.xml

.NET

JUnitXML.TestLogger NuGet 패키지는 .Net Framework 및 .Net Core 애플리케이션에 대한 테스트 보고서를 생성할 수 있습니다. 다음 예제는 리포지터리의 루트 폴더에 솔루션이 있고, 서브 폴더에 하나 이상의 프로젝트 파일이 있는 것을 기대합니다. 각 테스트 프로젝트당 하나의 결과 파일이 생성되며, 각 파일은 artifacts 폴더에 배치됩니다. 이 예제에는 테스트 데이터의 가독성을 향상시키는 선택적인 포맷 매개변수가 포함되어 있습니다. 완전한 .Net Core 예제가 사용 가능합니다.

## 소스 코드 및 문서는 여기 있습니다: https://github.com/spekt/junit.testlogger/

Test:
  stage: test
  script:
    - 'dotnet test --test-adapter-path:. --logger:"junit;LogFilePath=..\artifacts\{assembly}-test-result.xml;MethodFormat=Class;FailureBodyFormat=Verbose"'
  artifacts:
    when: always
    paths:
      - ./**/*test-result.xml
    reports:
      junit:
        - ./**/*test-result.xml

JavaScript

JavaScript에서 JUnit 보고서 형식의 XML 파일을 생성할 수 있는 몇 가지 도구들이 있습니다.

Jest

jest-junit npm 패키지는 JavaScript 애플리케이션에 대한 테스트 보고서를 생성할 수 있습니다. 다음 .gitlab-ci.yml 예제에서 javascript job은 Jest를 사용하여 테스트 보고서를 생성합니다.

javascript:
  image: node:latest
  stage: test
  before_script:
    - 'yarn global add jest'
    - 'yarn add --dev jest-junit'
  script:
    - 'jest --ci --reporters=default --reporters=jest-junit'
  artifacts:
    when: always
    reports:
      junit:
        - junit.xml

단위 테스트 파일(.test.js)이 없을 때 job을 성공으로 만들려면 script: 섹션의 jest 명령어 끝에 --passWithNoTests 플래그를 추가하세요.

Karma

Karma-junit-reporter npm 패키지는 JavaScript 애플리케이션에 대한 테스트 보고서를 생성할 수 있습니다. 다음 .gitlab-ci.yml 예제에서 javascript job은 Karma를 사용하여 테스트 보고서를 생성합니다.

javascript:
  stage: test
  script:
    - karma start --reporters junit
  artifacts:
    when: always
    reports:
      junit:
        - junit.xml

Mocha

Mocha를 위한 JUnit Reporter NPM 패키지는 JavaScript 애플리케이션에 대한 테스트 보고서를 생성할 수 있습니다. 다음 .gitlab-ci.yml 예제에서 javascript job은 Mocha를 사용하여 테스트 보고서를 생성합니다.

javascript:
  stage: test
  script:
    - mocha --reporter mocha-junit-reporter --reporter-options mochaFile=junit.xml
  artifacts:
    when: always
    reports:
      junit:
        - junit.xml

Flutter 또는 Dart

이 예제 .gitlab-ci.yml 파일은 flutter test 출력을 JUnit 보고서 XML 형식으로 변환하기 위해 JUnit Report 패키지를 사용합니다.

test:
  stage: test
  script:
    - flutter test --machine | tojunit -o report.xml
  artifacts:
    when: always
    reports:
      junit:
        - report.xml

PHP

이 예시는 --log-junit 플래그와 함께 PHPUnit을 사용합니다. 또한 phpunit.xml 구성 파일에서 XML을 사용하여 이 옵션을 추가할 수 있습니다.

phpunit:
  stage: test
  script:
    - composer install
    - vendor/bin/phpunit --log-junit report.xml
  artifacts:
    when: always
    reports:
      junit: report.xml

Rust

이 예시는 현재 디렉터리에 설치된 cargo2junit를 사용합니다. cargo test에서 JSON 출력을 검색하려면 nightly 컴파일러를 활성화해야 합니다.

run unittests:
  image: rust:latest
  stage: test
  before_script:
    - cargo install --root . cargo2junit
  script:
    - cargo test -- -Z unstable-options --format json --report-time | bin/cargo2junit > report.xml
  artifacts:
    when: always
    reports:
      junit:
        - report.xml

Helm

이 예시는 -t junit 플래그를 사용하여 XML 형식의 JUnit 보고서로 출력을 포맷하는 Helm Unittest 플러그인을 사용합니다.

helm:
  image: helmunittest/helm-unittest:latest
  stage: test
  script:
    - '-t JUnit -o report.xml -f tests/*[._]test.yaml .'
  artifacts:
    reports:
      junit: report.xml

-f tests/*[._]test.yaml 플래그는 helm-unittest가 다음 중 하나로 끝나는 tests/ 디렉터리 내의 파일을 찾도록 구성합니다:

  • .test.yaml
  • _test.yaml