Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Lulus Parameter Kompleks kepada Ujian Unit Didorong Teori dalam xUnit?
Rangka kerja ujian unit seperti xUnit menawarkan ciri yang mudah untuk ujian dipacu data. Walau bagaimanapun, apabila parameter kepada kaedah yang diuji ialah struktur data yang kompleks, seperti senarai kelas tersuai, atribut InlineData menjadi pendek.
Untuk menangani cabaran ini, xUnit menyediakan beberapa pilihan untuk menghantar parameter kompleks kepada ujian unit dipacu teori. Satu pilihan sedemikian ialah atribut MemberData.
Atribut MemberData membolehkan anda menentukan sifat atau kaedah yang mengembalikan IEnumerable
[Theory, MemberData(nameof(MyCustomData))] public void WriteReportsToMemoryStream(...) { // ... } public static IEnumerable<object[]> MyCustomData() { // ... }
Sebelum xUnit 2.0, alternatif lain wujud: ClassData. Sama seperti MemberData, ClassData membenarkan perkongsian penjana data antara ujian dalam kelas dan ruang nama yang berbeza. Contohnya:
public class MyCustomTests { [Theory, ClassData(typeof(MyCustomData))] public void WriteReportsToMemoryStream(...) { // ... } } public class MyCustomData : IEnumerable<object[]> { // ... }
xUnit 2.0 memperkenalkan versi terlebih muatan MemberData yang membolehkan penggunaan terus ahli statik dari kelas lain. Contoh ClassData di atas boleh ditulis semula menggunakan lebihan ini:
[Theory, MemberData(nameof(MyCustomData.GetData), MemberType = typeof(MyCustomData))] public void WriteReportsToMemoryStream(...) { // ... }
Contoh ini menggambarkan pelbagai cara untuk menghantar parameter kompleks kepada ujian unit dipacu teori dalam xUnit menggunakan MemberData, ClassData, dan kelebihan beban masing-masing. Dengan memanfaatkan atribut ini, pembangun boleh menjana data dengan mudah untuk kaedah ujian yang beroperasi pada struktur data yang kompleks.
Atas ialah kandungan terperinci Bagaimana untuk Lulus Parameter Kompleks kepada Ujian Unit Didorong Teori dalam xUnit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!