0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GitHub Actionsによるユニットテストの自動化

Posted at

はじめに

近年、CI/CDの自動化はソフトウェア開発の重要な部分となっています。特に、品質を保証しつつ迅速に開発を進めるためには、自動化されたテストとそのカバレッジのチェックが不可欠です。今回は、Go言語を使用したプロジェクトでGitHub Actionsを利用してユニットテストを実行し、テストカバレッジをチェックする方法を紹介します。

GitHub Actionsによるユニットテストの自動化

GitHub Actionsは、ソフトウェアのワークフローを自動化するための非常に強力なツールです。これを使用して、プルリクエストやコミット時に自動的にユニットテストを実行できます。

ユニットテストの設定

以下は、Go言語のプロジェクトにおけるユニットテストのための基本的なGitHub Actionsワークフローの設定例です。

name: Unit Tests

on:
  pull_request:
    branches:
      - main

jobs:
  unit-tests:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - name: Set up Go
        uses: actions/setup-go@v3
        with:
          go-version: 1.20

      - name: Run Unit Tests
        run: go test ./... -v

この設定では、**main**ブランチへのプルリクエスト時にユニットテストが実行されます。

テストカバレッジのチェック

テストカバレッジは、テストがどれだけのコードをカバーしているかを示す指標です。良いカバレッジ率は、コードの品質を保証する上で重要です。以下のステップでカバレッジをチェックし、特定の閾値以下の場合にはエラーを発生させるように設定します。

  1. テストコマンドにカバレッジオプションを追加します。

    - name: Run Unit Tests with Coverage
      run: go test ./... -coverprofile=coverage.out
    
  2. カバレッジの結果を分析し、指定した閾値(例えば80%)を下回っている場合にビルドを失敗させます。

    - name: Check Coverage
      run: |
        COVERAGE=$(go tool cover -func=coverage.out | grep total | awk '{print substr($3, 1, length($3)-1)}')
        echo "Code coverage is $COVERAGE%"
        if (( $(echo "$COVERAGE < 80.0" | bc -l) )); then
          echo "Code coverage is less than 80%"
          exit 1
        fi
    

この設定により、カバレッジが80%未満の場合にはエラーが発生し、ビルドが失敗します。この閾値はプロジェクトの要件に応じて調整してください。

おわりに

GitHub Actionsを使用したユニットテストとカバレッジチェックの自動化は、Go言語プロジェクトの品質を維持しつつ、開発プロセスをスムーズにするのに大いに役立ちます。この記事があなたのプロジェクトにおけるCI/CDの実装に役立つことを願っています。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?