xUnit.Netフレームワークの操作方法

私はかなり長い間xUnitを使用しており、それが私のユニットテストフレームワークとして選択されています。これは、ReSharper、CodeRush、TestDriven.Net、およびXamarinと互換性のある.Netフレームワーク用のオープンソースの単体テストツールです。xUnit.Netを利用して、例外タイプを簡単にアサートできます。また、xUnit.Netでファクト属性または理論属性を拡張でき、パラメーター化された単体テストを作成するための優れたサポートを提供します。xUnit.NetのGithubリポジトリリンクは次のとおりです。

VisualStudioでxUnit.netを操作する方法は次のとおりです。このデモンストレーションでは、Visual Studio 2015を使用しますが、他の互換性のあるバージョンのVisualStudioでも使用できます。次に、次の簡単な手順に従って、VisualStudioでxUnit.Netを操作するための環境をセットアップします。

  1. Visual Studio 2015UDEを開きます
  2. タイプ「クラスライブラリ」の新しいプロジェクトを作成します
  3. プロジェクトを名前で保存します
  4. 次に、NuGetパッケージマネージャーを介してxUnit.Netをインストールします

以上です!Visual Studio IDE内で単体テストを実行するには、VisualStudio用のxUnit.netランナーを使用できます。パッケージマネージャーのコンソールウィンドウを使用してxUnit.net [ランナー:Visual Studio]パッケージをインストールするには、次のように指定する必要があります。

Install-Package xunit.runner.visualstudio -Version 2.1.0

Visual Studio IDE内からxUnit.Net単体テストを実行できるように、環境をセットアップするために必要なのはこれだけです。

事実と理論

よく知られている一般的な[Test]属性とは異なり、xUnit.netを使用して単体テストメソッドを作成するには、[Fact]属性を使用する必要があります。xUnit.netは、事実と理論の2種類の単体テストをサポートしていることに注意してください。

事実は不変条件をテストするために使用されますが、理論はメソッドに引数として渡される特定のデータセットに当てはまるテストです。通常、[Fact]属性を使用して、メソッド引数のない単体テストを記述します。

ただし、[Theory]属性では、メソッド引数として1つ以上のDataAttributeインスタンスを渡す必要があります。本質的には、データ駆動型の単体テストを作成するために[Theory]属性を使用する必要があります。データ駆動型単体テストは、さまざまなデータセットに対して実行される単体テストです。

xUnit.NetとそのランナーforVisual Studioがインストールされていると仮定して、最初に[Fact]属性を使用して簡単な単体テストを記述しましょう。次の単体テスト方法を検討してください。ここでは[Fact]属性を利用します。

[Fact]

 public void CheckEqualityTest()

  {

     Assert.Equal(10, Sum(5, 5));

  }

Sumメソッドは2つの整数を受け入れ、それらの合計を返します。

  private int Sum(int x, int y)

  {

    return x + y;

  }

このテストを実行すると、単体テストに合格します。これは、Visual StudioIDEのテストエクスプローラーWindowsで確認できます。次に、理論を使用してデータ駆動型の単体テストを実行する方法を見ていきましょう。

次のコードスニペットは、xUnit.Netを使用してデータ駆動型単体テストを操作する方法を示しています。

[Theory, InlineData("This is a data driven test", "data")]

 public void CheckInputTest(string input, string substring)

 {

      Assert.Equal(true, input.Contains(substring));

 }

上記のコードスニペットを参照してください。[Theory]属性の使用法に注意してください。単体テストがデータ駆動型でない限り、単体テストメソッドで[Fact]属性を選択する必要があります。CheckInputという名前のデータ駆動型単体テストメソッドでパラメーターがどのように渡されたかに注意してください。InlineData属性は、ソースコードデータを提供します。この例では、データはインライン値を介してユニットテストメソッドに渡されます。複数のInlineData属性を持つこともできます。コンマを使用してそれらを区切る必要があります。これを実現する方法は次のとおりです。

[Theory, InlineData("This is a data driven test", "data"),

            InlineData("This is another set of data for the data driven test", "data")]

        public void CheckInputTest(string input, string substring)

        {

            Assert.Equal(true, input.Contains(substring));

        }

上記のデータ駆動型テストを実行すると、CheckInputTestメソッドが2回実行されます(入力データのセットごとに1回)。