ホームページ > バックエンド開発 > C++ > Xunit の [理論] テストに複雑なパラメーターを渡すにはどうすればよいですか?

Xunit の [理論] テストに複雑なパラメーターを渡すにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-30 05:59:09
オリジナル
532 人が閲覧しました

How Can I Pass Complex Parameters to Xunit's [Theory] Tests?

複雑なパラメータを [ Theory] ​​に渡す

文字列、整数、double などの単純なデータ型を Xunit の [ Theory ] テストにパラメータとして渡すのは、属性を使用することで簡単ですInlineData のような。ただし、より複雑なパラメーターの場合、そのようなデータをどのように提供するかという問題が生じます。

MemberData 属性

XUnit は MemberData 属性を提供します。これにより、IEnumerable を返すことができます。財産。各 object[] は、[セオリー] メソッドのパラメーターに解凍されます。

例:

public class StringTests
{
    [Theory, MemberData(nameof(SplitCountData))]
    public void SplitCount(string input, int expectedCount)
    {
        Assert.Equal(expectedCount, input.Split(' ').Length);
    }

    public static IEnumerable<object[]> SplitCountData =>
        new List<object[]>
        {
            { "xUnit", 1 },
            { "is fun", 2 },
            { "to test with", 3 }
        };
}
ログイン後にコピー

ClassData 属性

Xunit 2.0 より前では、次のようにすることができました。 ClassData 属性を使用して、異なるクラスのテスト間でデータ ジェネレーターを共有します。

の場合例:

public class StringTests
{
    [Theory, ClassData(typeof(IndexOfData))]
    public void IndexOf(string input, char letter, int expected)
    {
        Assert.Equal(expected, input.IndexOf(letter));
    }
}

public class IndexOfData : IEnumerable<object[]>
{
    // ... data and methods
}
ログイン後にコピー

静的メンバーの MemberData オーバーロード

Xunit 2.0 以降では、MemberData は MemberType パラメーターを取得して、別のクラスの静的メンバーを指定できます。

For例:

public class StringTests
{
    [Theory]
    [MemberData(nameof(IndexOfData.SplitCountData), MemberType = typeof(IndexOfData))]
    public void SplitCount(string input, int expectedCount)
    {
        Assert.Equal(expectedCount, input.Split(' ').Length);
    }
}
ログイン後にコピー

または、必要に応じて ClassData を使用することもできます。データジェネレーターとテストメソッドの分離

以上がXunit の [理論] テストに複雑なパラメーターを渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート