Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melewati Parameter Kompleks kepada Kaedah [Teori] XUnit?

Bagaimanakah Saya Boleh Melewati Parameter Kompleks kepada Kaedah [Teori] XUnit?

DDD
DDDasal
2025-01-04 14:50:39251semak imbas

How Can I Pass Complex Parameters to XUnit's [Theory] Methods?

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. Setiap objek[] dalam IEnumerable akan "dibongkar" sebagai parameter untuk satu panggilan ke kaedah [Teori] anda.

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, seperti yang ditunjukkan di bawah:

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn