Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Lulus Parameter Kompleks kepada Ujian [Teori] Xunit?

Bagaimanakah Saya Boleh Lulus Parameter Kompleks kepada Ujian [Teori] Xunit?

Susan Sarandon
Lepaskan: 2024-12-30 05:59:09
asal
534 orang telah melayarinya

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

Melalui Parameter Kompleks ke [Teori]

Melalui jenis data mudah seperti rentetan, integer dan beregu sebagai parameter kepada ujian [Teori] dalam Xunit adalah mudah menggunakan atribut seperti InlineData. Walau bagaimanapun, untuk parameter yang lebih kompleks, persoalan timbul tentang cara menyediakan data sedemikian.

AtributData Ahli

XUnit menawarkan atribut MemberData, yang membolehkan anda mengembalikan IEnumerable harta benda. Setiap objek[] akan dibongkar ke dalam parameter kaedah [Teori] anda.

Contohnya:

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 }
        };
}
Salin selepas log masuk

Atribut ClassData

Sebelum Xunit 2.0, anda boleh gunakan atribut ClassData untuk berkongsi penjana data antara ujian dalam kelas yang berbeza.

Untuk contoh:

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
}
Salin selepas log masuk

LebihanData Ahli untuk Ahli Statik

Dalam Xunit 2.0 dan lebih baru, MemberData boleh mengambil parameter MemberType untuk menentukan ahli statik daripada kelas lain.

Untuk contoh:

public class StringTests
{
    [Theory]
    [MemberData(nameof(IndexOfData.SplitCountData), MemberType = typeof(IndexOfData))]
    public void SplitCount(string input, int expectedCount)
    {
        Assert.Equal(expectedCount, input.Split(' ').Length);
    }
}
Salin selepas log masuk

Sebagai alternatif, anda masih boleh menggunakan ClassData jika anda lebih suka pemisahan antara penjana data dan kaedah ujian.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Lulus Parameter Kompleks kepada Ujian [Teori] Xunit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan