0Pricing
C# Academy · レッスン

xUnit/MSTestのセットアップとアサーション

テストの基本形(Arrange-Act-Assert)を学び、アサーションがテストを失敗させる仕組みを確認し、その考え方をMSTest/xUnitの属性に対応付けます。

「xUnit/MSTestのセットアップとアサーション」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン1/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全3レッスンが含まれています。

単体テストとは

目標: 小さく、繰り返し実行できる単体テストを書きます。

  • 分離したテストプロジェクトで MSTest または xUnit を使用します
  • 各テストで1つの動作を確認します
  • わかりやすい名前とアサーションを使用します

AAA パターン

テストは Arrange → Act → Assert に従います。ここでは、単純なチェックでアサーションをシミュレートします。

using System;

public static class MathUtil
{
  // Method under test
  public static int Add(int a, int b)
  {
    return a + b;
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    // Arrange
    int a = 2;
    int b = 3;
    int expected = 5;

    // Act
    int actual = MathUtil.Add(a, b);

    // Assert (manual check for this console demo)
    if (actual == expected)
      Console.WriteLine("PASS: Add returned " + actual);
    else
      Console.WriteLine("FAIL: expected " + expected + " but got " + actual);
  }
}

アサーションの動作

アサーションは不一致があると例外をスローします。実際のフレームワークも同様に動作します(より豊富な API と、より優れたレポート機能を備えています)。

using System;

public static class Assert
{
  public static void AreEqual(int expected, int actual)
  {
    if (expected != actual)
      throw new Exception("AreEqual failed: expected " + expected + ", actual " + actual);
  }

  public static void IsTrue(bool condition, string message)
  {
    if (!condition) throw new Exception("IsTrue failed: " + message);
  }
}

public static class MathUtil
{
  public static int Mul(int a, int b) { return a * b; }
}

public class Program
{
  public static void Main(string[] args)
  {
    try
    {
      int r = MathUtil.Mul(2, 4);
      Assert.AreEqual(8, r);                 // pass
      Assert.IsTrue(r % 2 == 0, "even");     // pass
      Console.WriteLine("All assertions passed.");
    }
    catch (Exception ex)
    {
      Console.WriteLine("TEST FAILED: " + ex.Message);
    }
  }
}

テストが成功する例

各テストで1つの動作を確認します。実際の MSTest/xUnit では、失敗する Assert によってテストが失敗として表示されます。

using System;

public static class StringUtil
{
  public static string Repeat(string s, int n)
  {
    if (n < 0) throw new ArgumentOutOfRangeException("n");
    string r = "";
    for (int i = 0; i < n; i++) r += s;
    return r;
  }
}

public static class Assert
{
  public static void AreEqual(string expected, string actual)
  {
    if (expected != actual)
      throw new Exception("AreEqual failed: expected [" + expected + "], actual [" + actual + "]");
  }
}

public class Program
{
  static void TestRepeat_Happy()
  {
    string got = StringUtil.Repeat("ab", 3);
    Assert.AreEqual("ababab", got); // pass
  }

  static void TestRepeat_EmptyTimesZero()
  {
    string got = StringUtil.Repeat("x", 0);
    Assert.AreEqual("", got); // pass
  }

  public static void Main(string[] args)
  {
    try { TestRepeat_Happy(); Console.WriteLine("PASS: Happy"); } catch (Exception ex) { Console.WriteLine("FAIL: Happy -> " + ex.Message); }
    try { TestRepeat_EmptyTimesZero(); Console.WriteLine("PASS: Zero"); } catch (Exception ex) { Console.WriteLine("FAIL: Zero -> " + ex.Message); }
  }
}

MSTest と xUnit の対応

MSTest の基本:

  • クラスに [TestClass] を付けます
  • 各テストに [TestMethod] を付けます
  • Assert.AreEqual/IsTrue/AreNotEqual…

xUnit の基本:

  • テストメソッドには [Fact] を使用します
  • Assert.Equal/True/False…
  • テストクラスの属性は必要ありません

名前付けとスコープのヒント

ヒント:

  • Method_Scenario_ExpectedResult のようにテストに名前を付けます
  • テストごとに1つのアサーション、または1つの動作にします
  • テストは小さく、独立した状態に保ちます

アサーションによる失敗

確認問題: MSTest または xUnit で単体テストを実際に失敗させるものは何でしょうか?

まとめ

まとめ: AAA パターンを使用し、アサーションで期待値と実際の値を比較して、MSTest([TestMethod])または xUnit([Fact])に対応させます。

よくある質問

「xUnit/MSTestのセットアップとアサーション」レッスンは無料ですか?

はい。「xUnit/MSTestのセットアップとアサーション」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全3レッスンが含まれています。

「xUnit/MSTestのセットアップとアサーション」で何を学びますか?

テストの基本形(Arrange-Act-Assert)を学び、アサーションがテストを失敗させる仕組みを確認し、その考え方をMSTest/xUnitの属性に対応付けます。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C# Academyを始めるのに経験は必要ですか?

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

「xUnit/MSTestのセットアップとアサーション」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. xUnit/MSTestのセットアップとアサーション
  2. インターフェースによるFakeとテストデータビルダー
  3. 失敗するテストのデバッグ
← C# Academyに戻る