Visual StudioでWinFormアプリを作成し、MSTestでCI/CDパイプラインを設定する手順(.NET 版)

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


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

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

1. Visual Studioを起動し、新しいプロジェクトの作成をクリックします。

2. プロジェクトテンプレートからWindows Forms App (.NET)を選択します。

3. プロジェクトに適切な名前を付け(例: MyWinFormApp)、保存場所を指定し、作成をクリックします。

System.Windows.Formsの参照追加

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

2. アセンブリタブからSystem.Windows.Formsを選択し、プロジェクトに追加します。

Addメソッドの実装

1. ソリューションエクスプローラーで、Form1.csを開きます。

2. Form1クラスに、2つの整数を引数に取り、その和を返すAddメソッドを追加します。

Addメソッドのコード例:

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

3. ボタンとテキストボックスをフォームに追加し、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つのテキストボックスに入力した数値を加算し、その結果を別のテキストボックスに表示します。

ビルドと実行

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


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

1. MSTestプロジェクトの追加

1. ソリューションエクスプローラーでソリューションを右クリックし、新しいプロジェクトの追加を選択します。

2. プロジェクトテンプレートからMSTest Test Project (.NET Core)を選択し、プロジェクト名をMyWinFormApp.Testsとします。

2. WinFormプロジェクトへの参照の追加(およびSystem.Windows.Formsの参照追加)

テストプロジェクトにMyWinFormAppプロジェクトの参照を追加

1. ソリューションエクスプローラーでテストプロジェクトを右クリックし、追加 > 参照 を選択します。

2. プロジェクト タブでMyWinFormAppを選択し、OKをクリックします。

System.Windows.Formsの参照を追加

1. ソリューションエクスプローラーでテストプロジェクト (MyWinFormApp.Tests) を右クリックし、追加 > 参照 を選択します。

    2. アセンブリ タブに移動し、System.Windows.Forms をリストから選択し、OK をクリックします。

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

    1. テストプロジェクトに新しいクラスを追加し、名前をForm1Testsとします。

    2. Form1クラスのAddメソッドに対するテストメソッドを作成します。

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

    using Microsoft.VisualStudio.TestTools.UnitTesting;
    using MyWinFormApp;
    
    [TestClass]
    public class Form1Tests
    {
        [TestMethod]
        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.AreEqual(expected, result);
        }
    }

    [TestMethod] 属性: MSTestでテストメソッドを定義するための属性です。

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

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

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

    4. テストの実行

    1. Visual Studioのテストメニューからテスト エクスプローラーを開きます。

    2. すべてのテストの実行をクリックし、テストが成功することを確認します。

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

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

    1. GitHubリポジトリの作成

    1. GitHubで新しいリポジトリを作成します。

    2. Visual StudioからソリューションをGitHubにプッシュします。

    2. GitHub Actionsの設定

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

    2. .NETのテンプレートを選択し、ワークフローを設定します。

    3. .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: MSTestを使ってテストを実行します。

    4. CI/CDの実行

    1. 変更をリポジトリにプッシュすると、GitHub Actionsが自動的にワークフローを実行します。

    2. 実行ログを確認し、すべてのテストが成功し、ビルドが正常に完了していることを確認します。

    4. まとめ

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