redwarrior’s diary

C#, ASP.NET, WEB, G*などの雑多な情報

(小ネタ)Chaining AssertionのParameterized TestでどのTest Caseで失敗したかを記録する

Chaining Assertionでは、Parameterized Testがサポートされているが、テストが失敗した時のメッセージにはどのケースで失敗したかの情報は含まれていないため、多くのテストケースを試す場合は以下のように工夫すると良い感じです。

//公式サンプルコードを一部修正
[TestClass]
public class UnitTest
{
    public TestContext TestContext { get; set; }

    [TestMethod]
    [TestCase(1, 1, 2, 3)]       //第1引数を追加
    [TestCase(2, 10, 20, 30)]    //第1引数を追加
    [TestCase(3, 100, 200, 300)] //第1引数を追加
    public void TestMethod2()
    {
        TestContext.Run((int i, int x, int y, int z) =>
        {
            Console.WriteLine($"ケースNo.{i:D2} x={x}, y={y}, z={z}") //第1引数をケースNo.としてコンソール出力
            (x + y).Is(z);
            (x + y + z).Is(i => i < 1000);
        });
    }
}

テスト結果の出力画面を表示すると、テストが失敗したところでコンソール出力が終了しているので、どこで失敗したかがわかるようになります。

実行環境