xUnit テストプロジェクトでメソッドのテストをスキップする

xUnit テストプロジェクトでメソッドのテストをスキップするコードを紹介します。

概要

xUnitテストプロジェクトのテストクラスでメソッドをスキップする場合には、Skip属性を記述します。

書式

次の書式を利用します。

[テストの種類(Skip="標準出力の文字列"]

テストがFactやTheroryの場合の書式は次のようになります。

[Fact(Skip="標準出力の文字列"]

コード

下記コードを記述します。

MyClass.cs (テストされるクラス)
using System;

namespace xUnitMethodSkip
{
  public class MyClass
  {
    public int proc1(int a, int b)
    {
      return a+b;
    }

    public int proc2(int a, int b)
    {
      return a - b;
    }

    public int proc3(int a, int b)
    {
      return a * b;
    }
  }
}

UnitTestMain.cs (テストプロジェクトのクラス)
using System;
using Xunit;
using xUnitMethodSkip;

namespace xUnitMethodSkipTest
{
  public class UnitTestMain
  {
    [Fact]
    public void Test1()
    {
      MyClass mc = new MyClass();
      Assert.Equal(3, mc.proc1(1,2));
    }

    [Fact]
    public void Test2()
    {
      MyClass mc = new MyClass();
      Assert.Equal(2, mc.proc2(4, 2));
    }

    [Fact]
    public void Test3()
    {
      MyClass mc = new MyClass();
      Assert.Equal(12, mc.proc3(3, 4));
    }

  }
}

解説

Factを利用したメソッドのテストをするコードです。こちらの記事も参照して下さい。

テストを実行すると3つのテストメソッドがテストされ結果が表示されます。
xUnit テストプロジェクトでメソッドのテストをスキップする:画像1

テストメソッドをスキップする

諸事情により、Test1() Test3() メソッドをスキップしたい状況になりました。テストメソッドをスキップするにはコードを次のように編集し、Skip属性を記述します。

UnitTestMain.cs (テストプロジェクトのクラス)
using System;
using Xunit;
using xUnitMethodSkip;

namespace xUnitMethodSkipTest
{
  public class UnitTestMain
  {
    [Fact(Skip ="未完成のため、スキップ")]
    public void Test1()
    {
      MyClass mc = new MyClass();
      Assert.Equal(3, mc.proc1(1,2));
    }

    [Fact]
    public void Test2()
    {
      MyClass mc = new MyClass();
      Assert.Equal(2, mc.proc2(4, 2));
    }

    [Fact(Skip = "未完成のため、スキップ")]
    public void Test3()
    {
      MyClass mc = new MyClass();
      Assert.Equal(12, mc.proc3(3, 4));
    }

  }
}


テストを実行するとワーニングのアイコンが表示され、テストがスキップされます。
xUnit テストプロジェクトでメソッドのテストをスキップする:画像2

テストメソッドを選択して[テスト詳細の概要]を確認すると、Skip属性に記述したメッセージが[標準出力]の欄に表示されています。
xUnit テストプロジェクトでメソッドのテストをスキップする:画像3

補足

他の属性と組み合わせる場合は、","で区切り記述します。

    [Fact(DislpayName = "積算処理のテスト", Skip = "未完成のため、スキップ")]
    public void Test3()
    {
      MyClass mc = new MyClass();
      Assert.Equal(12, mc.proc3(3, 4));
    }
AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2021-09-04
Copyright © 1995–2025 iPentec all rights reserverd.