複雑なパラメータを [理論] に渡す
XUnit は InlineData 属性を提供し、これによりユーザーは単純なデータ パラメータを使用して複数のテストを生成できます。ただし、カスタム クラスのリストなど、より複雑なパラメーターを扱う場合は、別のアプローチが必要になります。
MemberData 属性と ClassData 属性
XUnit には、次のいくつかのオプションが用意されています。複雑なパラメータを [セオリー] メソッドに渡します。 1 つのアプローチは、MemberData 属性を利用することです。この属性は、IEnumerable
もう 1 つのオプションは、ClassData 属性を使用することです。 ClassData は MemberData と同様に動作しますが、異なるクラスまたは名前空間のテスト間でデータ ジェネレーターを共有できます。また、「データ ジェネレーター」を実際のテスト メソッドから分離します。
静的メンバー サポートを使用した ClassData の例
静的メンバー サポートを使用して ClassData を使用するには、図に示すように、IEnumerable
public class IndexOfData { public static IEnumerable<object[]> SplitCountData => new List<object[]> { new object[] { "hello world", 'w', 6 }, new object[] { "goodnight moon", 'w', -1 } }; }
テスト クラスで、[セオリー] 属性を適用し、属性の MemberType プロパティを使用して静的メンバーを指定できます。
[Theory, MemberData(nameof(IndexOfData.SplitCountData), MemberType = typeof(IndexOfData))] public void IndexOf(string input, char letter, int expected) {...}
これらを活用することで、属性を使用すると、[セオリー] メソッドに複雑なパラメーターを渡すことができ、さまざまなシナリオを効率的にテストできるようになります。
以上がXUnit の [セオリー] メソッドに複雑なパラメーターを渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。