【JUnit】ローカルでテスト成功するのにGitLabCIでは失敗する時の調べ方
結論
- GitLab CIで実行したテストのレポートを表示する
- レポートを元に原因突き止めて修正する!
前提
GitLabのfeatureブランチへpushすると、テストで失敗していてbuildできない。
ローカルでは全てテスト成功しているのに、、
環境
- Mac
- GitLab 14.10.0
- Java 11
- JUnit 5.8.1
- ビルドツール
Gradle
テスト失敗時の詳細
- ローカル
-
プロジェクト/build/reports/tests/test/index.html
で詳細が見れる
-
- リモート(GitLabCI)
- どこで見るの??
GitLab上でテストレポートを確認したい
1 ) .gitlab-ci.yml
に追記
.gitlab-ci.yml(一部抜粋)
gradle_test:
stage: test
script:
- gradle test
artifacts:
paths:
- build
when: always
reports:
junit: build/test-results/test/**/TEST-*.xml
.gitlab-ci.yml
に追記
gradle_test:
stage: test
script:
- gradle test
artifacts:
paths:
- build
when: always
reports:
junit: build/test-results/test/**/TEST-*.xml
(上記は、javaビルドツールがGradle
の場合。Mavenの場合は異なる。)
(GitLab Runner13.0以降では、*
が使える)
-
artifacts: paths:
- Jobが終了した後に作成されるファイルやディレクトリの一覧のパスを指定(リポジトリのルートからの相対パス)
- 上記の場合、リポジトリ直下のbuildディレクトリを指定している
2 ) GitLab画面での詳細確認手順
さいごに
詳細を見て、原因判明。
原因:日付フォーマット変換と単体テストを追加してみたが、ローカルとリモートのTimeZoneが異なっていた。
確かに、ローカルでは通ったテストが、リモートでは通らないわけですね、、
SimpleDateFormatクラスで日付フォーマットの変換等をしているので、
TimeZoneを合わせる必要があるってこと(きっと常識の常識なんだろうな)勉強になりました。
失敗原因の調べ方さえ分かれば、どうにかなるかなと。今後のためのメモでした。
参考
・GitLabドキュメント/UnitTestReport
・Reporting test results in GitLab
Author And Source
この問題について(【JUnit】ローカルでテスト成功するのにGitLabCIでは失敗する時の調べ方), 我々は、より多くの情報をここで見つけました https://qiita.com/ayalikesweb/items/2198f039e96a71ead5d3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .