xUnitテストプロジェクトでテストエクスプローラーにテストの名称を表示したい - Visual Studio

xUnitテストプロジェクトでテストエクスプローラーにテストの名称を表示する方法を紹介します。

概要

デフォルトの設定では、テストエクスプローラーのテストの項目にはテストメソッド名が表示されます。 利用状況によっては、テストメソッドではなくテストの内容や説明を表示したい場合があります。 この記事では、DisplayName 属性を設定して、テストエクスプローラーのメソッド名部分に表示文字列を設定する方法を紹介します。

書式

次の書式を利用します。
[テストの種類(DislpayName="表示したい文字列"]
テストがFactやTheroryの場合の書式は次のようになります。
[Fact(DislpayName="表示したい文字列"]
[Theory(DislpayName="表示したい文字列"]
[InlineData( ... )]
[InlineData( ... )]
...
[InlineData( ... )]

実装例

コード

次のコードを準備します。
テスト元 (MyClass.cs)
using System;

namespace xUnitDisplayName
{
  public class MyClass
  {

    public string Proc1()
    {
      return "ぺんぎんクッキー";
    }

    public int Proc2()
    {
      return 450;
    }

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

  }
}
テストプロジェクトのコード (UnitTestMain.cs)
using System;
using Xunit;
using xUnitDisplayName;

namespace xUnitDisplayNameTest
{
  public class UnitTestMain
  {
    [Fact(DisplayName = "文字列取得のテスト")]
    public void Test1()
    {
      MyClass mc = new MyClass();
      Assert.True(mc.Proc1() == "ぺんぎんクッキー", "テスト失敗です");
    }

    [Fact(DisplayName = "数値取得のテスト")]
    public void Test2()
    {
      MyClass mc = new MyClass();
      Assert.True(mc.Proc2() ==400, "テスト失敗です");
    }

    [Fact(DisplayName = "加算処理のテスト")]
    public void Test3()
    {
      MyClass mc = new MyClass();
      Assert.True(mc.Proc3(1,6) == 7, "テスト失敗です");
    }

  }
}

解説

Test1メソッドにDisplayNameを設定しています。「文字列取得のテスト」の表示文字を設定しています。
  [Fact(DisplayName = "文字列取得のテスト")]
  public void Test1()
  {
   /* 中略 ... */
  }

Test2 Test3 メソッドも同様にDisplayNameを設定しています。

実行結果

テストを実行します。テストエクスプローラーを表示します。
テストメソッドが表示される部分にDisplayNameで設定した文字列が表示されることが確認できます。


テストエクスプローラーのメソッド名部分にテストの名称を表示できました。

このページのキーワード
  • xUnit テストの名称を表示
  • xUnit テストエクスプローラー テストの名称を表示
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2021-09-01
iPentec all rights reserverd.