ユニットテストレポートの例

ユニットテストレポートは、多くの言語やパッケージに対して生成できます。これらの例は、リストされた言語やパッケージのユニットテストレポートを生成するようにパイプラインを設定するためのガイドラインとして使用してください。使用している言語やパッケージのバージョンに合わせて例を編集する必要があるかもしれません。

Ruby

.gitlab-ci.yml で以下のジョブを使用します。これにはartifacts:paths キーワードが含まれ、ユニットテストのレポート出力ファイルへのリンクを提供します。

## Use https://github.com/sj26/rspec_junit_formatter to generate a JUnit report format XML file with rspec
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

.gitlab-ci.yml で以下のジョブを使用してください:

## Use https://github.com/gotestyourself/gotestsum to generate a JUnit report format XML file with go
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 テストレポートの生成に使用 gradleします。gradle 複数のテストタスクが定義されている場合、 gradle build/test-results/ の下に複数のディレクトリが生成されます。その場合、次のパスを定義することでグロブマッチングを活用できます: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

SurefireおよびFailsafeテストレポーターの解析には、.gitlab-ci.yml で以下のジョブを使用します:

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

Python example

この例では、--junitxml=report.xml フラグを指定した pytest を使用して、出力を 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 テストレポートの生成に使用 gtestします。異なるアーキテクチャ(x86x64arm )用にgtest 複数の 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

NuGetパッケージのJunitXML.TestLoggerは、.NET Frameworkと.NET Coreアプリケーションのテストレポートを生成することができます。次の例では、リポジトリのルートフォルダにソリューションがあり、サブフォルダに1つ以上のプロジェクトファイルがあることを想定しています。テスト プロジェクトごとに 1 つの結果ファイルが生成され、各ファイルはアーティファクト フォルダに配置されます。この例には、テストウィジェットのテストデータの可読性を向上させる、オプションのフォーマット引数が含まれています。.NET Core の完全なサンプルがあります。

## Source code and documentation are here: 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でJUnitレポート形式のXMLファイルを作成できるツールがいくつかあります。

Jest

jest-junitnpm パッケージは JavaScript アプリケーションのテストレポートを生成できます。次の.gitlab-ci.yml の例では、javascript のジョブが 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 ファイルがないときにジョブを通過させるには、script: セクションのjest コマンドの最後に--passWithNoTests フラグを追加します。

Karma

Karma-junit-reporternpm パッケージは、JavaScript アプリケーションのテストレポートを生成できます。次の.gitlab-ci.yml の例では、javascript のジョブはテストレポートを生成するために Karma を使います:

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

Mocha

JUnit Reporter for MochaNPM パッケージは JavaScript アプリケーションのテストレポートを生成できます。次の.gitlab-ci.yml の例では、javascript のジョブが 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 ファイルは、JUnit Reportパッケージを使ってflutter test の出力を JUnit レポート XML フォーマットに変換しています:

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 出力を取得するには、ナイトリーコンパイラを有効にする必要があります。

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

この例では、Helm Unittestプラグインを使用し、-t junit フラグを使用して XML 形式の JUnit レポートを出力します。

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 フラグを指定すると、tests/ ディレクトリの末尾がどちらかのファイルを探すようにhelm-unittest が設定されます:

  • .test.yaml
  • _test.yaml