Nunit: Tidak dapat menguji jenis objek dengan batasan

Dibuat pada 8 Jan 2018  ·  4Komentar  ·  Sumber: nunit/nunit

Halo, saya tidak dapat menguji tipe objek dengan batasan, tetapi pernyataan klasik masih berfungsi

enum TestEnum : ushort
{
    one = 0x01,
    two = 0x02
}

// test is okay
Assert.AreEqual(typeof(ushort), typeof(TestEnum).GetEnumUnderlyingType());

// test failed
//
// Expected: <System.Uint16>
//  But was: <System.RuntimeType>
//
Assert.That(typeof(TestEnum).GetEnumUnderlyingType(), Is.TypeOf<ushort>());
notabug

Komentar yang paling membantu

Hai @TobiasSekan. Saya akan mengatakan bahwa ini diharapkan. Dalam pernyataan klasik Anda hanya membandingkan dua jenis. Batasan "_tests apakah nilai sebenarnya dari tipe yang disediakan sebagai argumen atau tipe turunan._" dan tipe nilai typeof(TestEnum).GetEnumUnderlyingType() adalah System.RuntimeType .

Serupa, berikut ini juga akan gagal (dengan jenis pesan yang sama)

Assert.That(typeof(string), Is.TypeOf<string>());

sedangkan

Assert.That("", Is.TypeOf<string>());

akan bekerja. Anda selalu dapat menyusun ulang batasan sebagai Assert.That(typeof(TestEnum).GetEnumUnderlyingType(), Is.EqualTo(typeof(ushort)));

Semua 4 komentar

Platform apa dan versi nunit apa?

Hai @TobiasSekan. Saya akan mengatakan bahwa ini diharapkan. Dalam pernyataan klasik Anda hanya membandingkan dua jenis. Batasan "_tests apakah nilai sebenarnya dari tipe yang disediakan sebagai argumen atau tipe turunan._" dan tipe nilai typeof(TestEnum).GetEnumUnderlyingType() adalah System.RuntimeType .

Serupa, berikut ini juga akan gagal (dengan jenis pesan yang sama)

Assert.That(typeof(string), Is.TypeOf<string>());

sedangkan

Assert.That("", Is.TypeOf<string>());

akan bekerja. Anda selalu dapat menyusun ulang batasan sebagai Assert.That(typeof(TestEnum).GetEnumUnderlyingType(), Is.EqualTo(typeof(ushort)));

Tangkapan yang bagus @mikkelbu. Saya akan menutup ini sebagai not a bug . @TobiasSekan Saya dapat melihat kebingungan, tetapi secara efektif parameter pertama Anda adalah TypeOf<Type> bukan ushort .

Oke, terima kasih atas informasinya

Apakah halaman ini membantu?
0 / 5 - 0 peringkat