【WinForm】中級:.NETでxUnitでCI/CDパイプラインを設定する手順( サンプルはAddメソッド)

このガイドでは、Visual Studioを使用してWinFormアプリケーションを作成し、その中にAddメソッドを実装します。そして、xUnitを使ってこのメソッドのテストを行い、それを継続的インテグレーションとデリバリー(CI/CD)のパイプラインに統合する方法を説明します。


1. Visual StudioでWinFormアプリケーションの作成

新しいプロジェクトの作成

Visual Studioを起動し、新しいプロジェクトの作成をクリックします。
プロジェクトテンプレートからWindows Forms App (.NET)を選択します。
プロジェクトに適切な名前を付け(例: MyWinFormApp)、保存場所を指定し、作成をクリックします。

Addメソッドの実装

ソリューションエクスプローラーで、Form1.csを開きます。
Form1クラスに、2つの整数を引数に取り、その和を返すAddメソッドを追加します。

Addメソッドのコード例:

public int Add(int a, int b)
{
    return a + b;
}

ボタンとテキストボックスをフォームに追加し、Addメソッドを使用するロジックを実装します。

ボタンのクリックイベントの例:

private void button1_Click(object sender, EventArgs e)
{
    int num1 = int.Parse(textBox1.Text);
    int num2 = int.Parse(textBox2.Text);
    int result = Add(num1, num2);
    textBox3.Text = result.ToString();
}

このコードでは、ユーザーが2つのテキストボックスに入力した数値を加算し、その結果を別のテキストボックスに表示します。

ビルドと実行

アプリケーションが正しく動作することを確認するために、F5キーを押してプロジェクトをビルドし、実行します。


2. xUnitを使用してAddメソッドのテストを作成

xUnitテストプロジェクトの追加

ソリューションエクスプローラーでソリューションを右クリックし、新しいプロジェクトの追加を選択します。
プロジェクトテンプレートからxUnit Test Project (.NET)を選択し、プロジェクト名をMyWinFormApp.Testsとします。

WinFormプロジェクトへの参照の追加

テストプロジェクトが作成されたら、MyWinFormAppプロジェクトへの参照を追加します。
ソリューションエクスプローラーでテストプロジェクトを右クリックし、追加-プロジェクトの参照を選択します。
プロジェクトタブでMyWinFormAppを選択し、OKをクリックします。

テストクラスとメソッドの作成

テストプロジェクトに新しいクラスを追加し、名前をForm1Testsとします。Form1クラスのAddメソッドに対するテストメソッドを作成します。

テストクラスのコード例:

using Xunit;
using MyWinFormApp;

public class Form1Tests
{
    [Fact]
    public void Add_ShouldReturnCorrectSum_WhenTwoNumbersAreGiven()
    {
        // Arrange
        var form = new Form1();
        int num1 = 2;
        int num2 = 3;
        int expected = 5;

        // Act
        int result = form.Add(num1, num2);

        // Assert
        Assert.Equal(expected, result);
    }
}

[Fact] 属性:

xUnitで単一のテストを定義するための属性です。

Arrange:

テストの準備を行います。この部分では、Form1クラスのインスタンスを作成し、テストに必要な値を設定します。

Act:

テスト対象のメソッドであるAddを実行し、その結果を取得します。

Assert:

結果が期待される値と一致するかを確認します。

テストの実行

Visual Studioのテストメニューからテスト エクスプローラーを開きます。
すべてのテストの実行をクリックし、テストが成功することを確認します。


3. CI/CDパイプラインの設定

CI/CDパイプラインを設定するには、GitHub ActionsやAzure PipelinesのようなCI/CDツールを利用します。ここでは、GitHub Actionsを例に説明します。

GitHubリポジトリの作成

GitHubで新しいリポジトリを作成します。
Visual StudioからソリューションをGitHubにプッシュします。

GitHub Actionsの設定

リポジトリのActionsタブをクリックし、新しいワークフローの設定を選択します。
.NETのテンプレートを選択し、ワークフローを設定します。

.NETワークフローの構成

.github/workflows/dotnet.ymlファイルが作成され、ワークフローが定義されます。

:

name: .NET

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

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2

    - name: Setup .NET
      uses: actions/setup-dotnet@v2
      with:
        dotnet-version: '6.0.x'

    - name: Restore dependencies
      run: dotnet restore

    - name: Build
      run: dotnet build --no-restore

    - name: Run tests
      run: dotnet test --no-build --verbosity normal

restore:

依存関係を復元します。

build:

アプリケーションをビルドします。

test:

xUnitを使ってテストを実行します。

CI/CDの実行

変更をリポジトリにプッシュすると、GitHub Actionsが自動的にワークフローを実行します。
実行ログを確認し、すべてのテストが成功し、ビルドが正常に完了していることを確認します。


4. まとめ

このガイドでは、Visual StudioでWinFormアプリケーションを作成し、その中にAddメソッドを実装してテストする方法を学びました。そして、それをGitHub Actionsを使ってCI/CDパイプラインに統合しました。このプロセスにより、コードの変更があるたびに自動的にテストが実行され、アプリケーションの品質が保たれます。