Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melewati Parameter Kompleks kepada Kaedah [Teori] XUnit?
Melalukan Parameter Kompleks kepada [Teori]
XUnit menyediakan atribut InlineData, yang membolehkan pengguna menjana berbilang ujian dengan parameter data ringkas. Walau bagaimanapun, apabila berurusan dengan parameter yang lebih kompleks, seperti senarai kelas tersuai, pendekatan berbeza diperlukan.
AtributData Ahli dan ClassData
XUnit menawarkan beberapa pilihan untuk menghantar parameter kompleks kepada kaedah [Teori]. Satu pendekatan ialah menggunakan atribut MemberData. Atribut ini mengarahkan XUnit untuk melaksanakan sifat yang mengembalikan IEnumerable
Pilihan lain ialah menggunakan atribut ClassData. ClassData beroperasi sama seperti MemberData tetapi membenarkan perkongsian penjana data antara ujian dalam kelas atau ruang nama yang berbeza. Ia juga memisahkan 'penjana data' daripada kaedah ujian sebenar.
Contoh ClassData dengan Sokongan Ahli Statik
Untuk menggunakan ClassData dengan sokongan ahli statik, anda boleh mentakrifkan kelas dengan sifat statik yang mengembalikan IEnumerable
public class IndexOfData { public static IEnumerable<object[]> SplitCountData => new List<object[]> { new object[] { "hello world", 'w', 6 }, new object[] { "goodnight moon", 'w', -1 } }; }
Dalam kelas ujian anda, anda kemudian boleh menggunakan atribut [Teori] dan menentukan ahli statik menggunakan sifat MemberType atribut:
[Theory, MemberData(nameof(IndexOfData.SplitCountData), MemberType = typeof(IndexOfData))] public void IndexOf(string input, char letter, int expected) {...}
Dengan memanfaatkan ini atribut, anda boleh menghantar parameter kompleks kepada kaedah [Teori] anda, membolehkan anda menguji pelbagai senario dengan cekap.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melewati Parameter Kompleks kepada Kaedah [Teori] XUnit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!