0Pricing
DevOps Bootcamp · レッスン

GitHub Actions によるテスト実行

自動化された単体テストと統合テストを CI パイプラインに組み込み、コード品質を確保してリグレッションを防ぎます。

「GitHub Actions によるテスト実行」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。

CI でテストを自動化する理由

コードを変更した直後に、別の部分を壊していないか確認できる状況を想像してください。それが CI パイプラインで自動テストを行う効果です。

継続的インテグレーション(CI)とは、コードの変更を中央リポジトリに頻繁にマージする取り組みです。自動テストは、このプロセスを守る役割を果たします。

自動テストによってバグを早期に発見し、すばやくフィードバックを得られるため、コードを変更するたびに安心して作業できます。

パイプラインで行うテストの種類

自動テストについて説明するとき、よく取り上げられる主な種類が Unit Test と Integration Test です。

  • Unit Test: 1つの関数やメソッドなど、コードの小さく独立した部分に焦点を当てます。実行が速く、問題の箇所を正確に特定できます。
  • Integration Test: データベースや API とコードの連携など、システムの異なる部分が正しく連携して動作するかを確認します。

どちらも、ソフトウェアの堅牢性と信頼性を確保するために重要です。

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

GitHub Actions は、コードをプッシュするたびにテストを自動実行する、専用のテストランナーとして機能します。

いつ実行するか、どの環境を使うか、どのコマンドを実行するかを指定した ワークフローを定義します。

これにより、手動で作業しなくても、すべての変更を一貫して検証できます。

Java プロジェクトのテスト準備

ここでは、広く使われているビルド自動化ツール Maven で管理する、シンプルな Java プロジェクトを使用します。

Maven はプロジェクトの依存関係を管理し、コードのコンパイルやテストを実行するコマンドを提供します。

このプロジェクトには、シンプルな Java クラスと、それに対応する JUnit テスト(概念的なもの)を用意します。

初めて実行できるテストの例

これは、機能を確認するためのシンプルな Java クラスと基本的なテストです。わかりやすくするため、完全な JUnit のセットアップを使わずに Unit Test を再現しています。

main メソッドがテストランナーとして機能し、add メソッドが期待どおりに動作するかを確認します。

実行して、出力を確認してみましょう。

public class Calculator {
  // Method to be tested
  public int add(int a, int b) {
    return a + b;
  }

  public static void main(String[] args) {
    Calculator calc = new Calculator();
    // Simulate a test case
    int expected = 5;
    int actual = calc.add(2, 3);

    if (actual == expected) {
      System.out.println("Test Passed: 2 + 3 = " + actual);
    } else {
      System.out.println("Test Failed: Expected " + expected + ", Got " + actual);
    }
  }
}

テストワークフローの構築

それでは、テストを実行する GitHub Actions のワークフローファイル(.github/workflows/test.yml)がどのようになるか見てみましょう。

この YAML ファイルでは、環境をセットアップしてテストコマンドを実行するために GitHub Actions が行う手順を定義します。

実際のプロジェクトで JUnit テストを実行するために、Maven の test コマンドを使用します。

name: Java CI with Maven

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up JDK 17
        uses: actions/setup-java@v4
        with:
          java-version: '17'
          distribution: 'temurin'
          cache: maven
      - name: Run Maven Tests
        run: mvn test

ワークフローの各ステップを理解する

テストワークフローの主なステップを詳しく見ていきましょう。

  • on: push / pull_request: コードがプッシュされたとき、または main ブランチに対してプルリクエストが作成されたときにワークフローを起動します。
  • runs-on: ubuntu-latest: ワークフローを実行する仮想マシン(ランナー)のオペレーティングシステムを指定します。
  • actions/checkout@v4: リポジトリのコードをランナーにチェックアウトする、あらかじめ構築されたアクションです。
  • actions/setup-java@v4: ランナーに Java Development Kit(JDK)をセットアップするアクションです。
  • run: mvn test: 重要なステップです。Maven コマンドを実行してコードをコンパイルし、定義されているすべてのテストを実行します。

CI でのテスト失敗への対処

CI でテストを行う大きなメリットは、すぐにフィードバックを得られることです。テストが1つでも失敗すると、GitHub Actions のワークフロージョブも失敗します。

これにより、直近のコード変更によってバグやリグレッションが発生したことが明確にわかります。

その後、ワークフローのログを確認して、どのテストがなぜ失敗したのかを正確に特定できます。問題をすばやく修正するのに役立ちます。

効果:品質と信頼性

自動テストを CI パイプラインに組み込むことは、現代のソフトウェア開発の基盤です。

リグレッションを積極的に防ぎ、コード品質を一貫して保ち、壊れた機能をデプロイするリスクを大幅に減らします。

このプロセスによってコードベースへの信頼が高まり、チームはより速く、より確実に新しい取り組みを進められます。

ワークフローのテスト確認

テストを実行する GitHub Actions ワークフローを考えてみましょう。Java プロジェクトにおける run: mvn test ステップの主な目的は何でしょうか。

まとめ:CI パイプラインでのテスト

このレッスンでは、GitHub Actions の CI パイプラインに自動テストを組み込む方法を学びました。

次の内容を扱いました。

  • コード品質における自動テストの重要性
  • Unit Test と Integration Test の違い
  • Maven を使って Java のテストを実行する GitHub Actions ワークフローの構成方法
  • checkout や setup-java などのワークフローステップ
  • テストを実行する mvn test の重要な役割
  • GitHub Actions がテストの失敗を報告する方法

自動テストは、バグを早期に発見し、堅牢なコードベースを維持するために不可欠です。

よくある質問

「GitHub Actions によるテスト実行」レッスンは無料ですか?

はい。「GitHub Actions によるテスト実行」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。

「GitHub Actions によるテスト実行」で何を学びますか?

自動化された単体テストと統合テストを CI パイプラインに組み込み、コード品質を確保してリグレッションを防ぎます。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

DevOps Bootcampを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「GitHub Actions によるテスト実行」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDevOps Bootcampレッスンでコードを書いて実行できますか?

はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ワークフローのトリガーとイベント
  2. GitHub Actions によるテスト実行
  3. Lint とコード品質チェック
  4. 依存関係のキャッシュによるビルド高速化
← DevOps Bootcampに戻る