ユニットテストレポートの例
ユニットテストレポートは、多くの言語やパッケージに対して生成できます。これらの例は、リストされた言語やパッケージのユニットテストレポートを生成するようにパイプラインを設定するためのガイドラインとして使用してください。使用している言語やパッケージのバージョンに合わせて例を編集する必要があるかもしれません。
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
します。異なるアーキテクチャ(x86
、x64
、arm
)用に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