Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

xUnit でテスト順を制御する

筋が悪いことは分かっているのですが、テスト順を制御したい場合がたまにあります。

github.com

ここんとこのIssueでも話題になっていました。デフォではサポートされないので、このリンク先のとこのExampleをやってみました。

https://github.com/xunit/samples.xunit/tree/master/TestOrderExamples/TestCaseOrdering

アルファベット順と、プライオリティ順の2つのAttributeが用意されていますが、ここではプライオリティ順を。

  • Priority.cs を取り込む
  • TestPriorityAttribute.cs を取り込む

以下例ですが、ポイントはTestCaseOrder属性にクラスのFQNと、アセンブリ名を指定することです。TestCaseOrder属性はxUnitが提供するものなので、その指示をカスタマイズしている感じでしょうか。

   [TestCaseOrderer("XUnitTestProject1.PriorityOrderer", "XUnitTestProject1")]

    public class UnitTest1 : IClassFixture<T1Fixture>, IClassFixture<T2Fixture>
    {
   
        [Fact, TestPriority(2)]

        public void Test1()
        {
           ....
        }

        [Fact, TestPriority(1)]
        public void Test2()
        {
            ....
        }
    }