xunit 事実を複数回テストする 質問する

xunit 事実を複数回テストする 質問する

提案を行うためにランダムな計算に依存するいくつかの方法があり、問題がないことを確認するために Fact を数回実行する必要があります。

テストしたいファクト内に for ループを含めることもできますが、これを実行したいテストが複数あるため、junit の Repeat 属性のような、よりクリーンなアプローチを探していました。http://www.codeaffine.com/2013/04/10/running-junit-tests-repeatedly-without-loops/

このようなものを xunit で簡単に実装できますか?

ベストアンサー1

DataAttributexunit に同じテストを複数回実行するように指示するには、新しいものを作成する必要があります。

以下は、junit と同じ考え方に従ったサンプルです。

public class RepeatAttribute : DataAttribute
{
    private readonly int _count;

    public RepeatAttribute(int count)
    {
        if (count < 1)
        {
            throw new ArgumentOutOfRangeException(nameof(count), 
                  "Repeat count must be greater than 0.");
        }
        _count = count;
    }

    public override IEnumerable<object[]> GetData(MethodInfo testMethod)
    {
        return Enumerable.Repeat(new object[0], _count);
    }
}

このコードを配置したら、Factを に変更してTheoryRepeat次のように使用するだけです。

[Theory]
[Repeat(10)]
public void MyTest()
{
    ...
}

おすすめ記事