2
1

GithubActionsを利用してJavaアプリのテストを自動化する

Last updated at Posted at 2023-10-09

GithubActionsを使ってGithub上でリソースを管理しているJavaアプリのテストを自動化してみる。
今回はGithubActionsの触りということで、簡単なUnitテストのみやってみる。

初期状態

Githubの以下の構成からスタート。

RepositoryRoot
  /SampleJavaApp(EclipseJavaプロジェクト)
      /src/main/java
          Sample.java
      /src/test/java
          SampleTest.java
      /gradle/wrapper
          gradle-wrapper.jar
          gradle-wrapper.properties
      build.gradle
      gradlew
      gradlew.bat

Gitリポジトリの下にJavaアプリリソースを管理するEclipseプロジェクトフォルダがある感じ。

mainブランチから派生したブランチを作成し、
派生ブランチで以下の編集を行う。

ワークフロー定義を作成

リポジトリ直下に以下のファイルを作成

.github/workflows/JavaTest.yml

YAMLのファイル名はなんでもいい。
JavaTest.ymlの中身は以下の通り。

name: Java CI with Gradle

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]
    
permissions:
  contents: read

jobs:
  build:
    runs-on: ubuntu-latest
    steps:

    - uses: actions/checkout@v3

    # アプリに合わせたJDKバージョンを指定
    - name: Set up JDK 17
      uses: actions/setup-java@v3
      with:
        java-version: '17'
        distribution: 'temurin'

    - name: chmod gradlew
      working-directory: ./SampleJavaApp
      run: chmod +x gradlew

    - name: build and test application
      working-directory: ./SampleJavaApp
      run: ./gradlew build

EclipseJavaプロジェクト配下のgredrewを実行する場合は、
working-directoryでEclipseJavaプロジェクトフォルダパスを指定する。
(gradlew実行の前に、chmod +x gradlewを事前にやっとかないと動かなかった。)

上記を追加したGithubリポジトリは下記。

RepositoryRoot
  /.github/workflows
      JavaTest.yml ★これを追加
  /SampleJavaApp(EclipseJavaプロジェクト)
      /src/main/java
          Sample.java
      /src/test/java
          SampleTest.java
      /gradle/wrapper
          gradle-wrapper.jar
          gradle-wrapper.properties
      build.gradle
      gradlew
      gradlew.bat

GithubにPUSH、ワークフローを確認

.github/workflows/JavaTest.ymlを追加した状態でコミット、GithubにPUSH。
すると、PRの画面に以下のような画面表示になる。

image.png

テスト結果も含めて、すべて正常に処理が完了すると以下の表示に変わる。

image.png

テスト失敗、もしくはワークフロー上でなんらかの失敗が発生すると以下の表示となる。

image.png

ワークフローの実行状態を見たいときはChecksタブDetailsリンクをクリックする。

image.png

すると以下のような画面が表示される。
右側の背景が黒い画面で各ジョブの実行時の標準出力内容を展開表示できる。
✖となっている個所がワークフローで失敗した個所なので、ここをクリックして展開して原因などを調べる。

image.png

テスト結果レポートを保存する設定を追加

コンソールに表示された内容だけだと、テスト結果の内容が分かり辛いので、
ワークフロー定義ファイルにGradleテスト結果レポートを保存・取得できる設定を追加。

name: Java CI with Gradle

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]
    
permissions:
  contents: read

jobs:
  build:
    runs-on: ubuntu-latest
    steps:

    - uses: actions/checkout@v3

    - name: Set up JDK 17
      uses: actions/setup-java@v3
      with:
        java-version: '17'
        distribution: 'temurin'

    - name: chmod gradlew
      working-directory: ./SampleJavaApp
      run: chmod +x gradlew

    - name: build and test application
      working-directory: ./SampleJavaApp
      run: ./gradlew build

    # ★以下の設定を追加
    - name: save test reports as artifact
      uses: actions/upload-artifact@v2
      if: always()
      with:
        name: test-reports
        path: SampleJavaApp/build/reports/tests/test

上記のupload-artifactアクションでワークフローの成果物を保存できる。
if: always()が無いとテストが失敗したときにワークフローが停止してレポート作成のステップが行われないので注意。

上記をPUSH後にActionsタブの間近のワークフロー実行結果をクリック。
ワークフロー実行結果ページのArtifactsのところからテスト結果レポートがDLできる

  • Actionsタブ
    image.png

  • ワークフロー実行結果ページ
    image.png

  • テスト結果レポート
    image.png
    ※上記テスト結果レポートはzipファイルでダウンロードされる

とりあえずGithubActionsでJavaアプリテストするだけならさっくりできた。
chmod gradlewgredrewの実行は同じステップで書けたかも。

今回使ったコードは下記
https://github.com/suganury/Sample

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1