Nunit: Objekttyp kann nicht mit Einschränkung getestet werden

Erstellt am 8. Jan. 2018  ·  4Kommentare  ·  Quelle: nunit/nunit

Hallo, ich kann Objekttypen nicht mit einer Einschränkung testen, aber die klassische Assertion funktioniert immer noch

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

Hilfreichster Kommentar

Hallo @TobiasSekan. Ich würde sagen, das wird erwartet. In der klassischen Behauptung vergleichen Sie nur zwei Typen. Die Einschränkung "_ testet, ob der tatsächliche Wert von dem als Argument gelieferten oder abgeleiteten Typ ist._" und der Typ des Werts typeof(TestEnum).GetEnumUnderlyingType() ist System.RuntimeType .

Ähnliches würde auch fehlschlagen (mit der gleichen Art von Nachricht)

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

wohingegen

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

würde funktionieren. Sie können die Einschränkung jederzeit in Assert.That(typeof(TestEnum).GetEnumUnderlyingType(), Is.EqualTo(typeof(ushort))); umformulieren

Alle 4 Kommentare

Welche Plattform und welche Nunit-Version bitte?

Hallo @TobiasSekan. Ich würde sagen, das wird erwartet. In der klassischen Behauptung vergleichen Sie nur zwei Typen. Die Einschränkung "_ testet, ob der tatsächliche Wert von dem als Argument gelieferten oder abgeleiteten Typ ist._" und der Typ des Werts typeof(TestEnum).GetEnumUnderlyingType() ist System.RuntimeType .

Ähnliches würde auch fehlschlagen (mit der gleichen Art von Nachricht)

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

wohingegen

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

würde funktionieren. Sie können die Einschränkung jederzeit in Assert.That(typeof(TestEnum).GetEnumUnderlyingType(), Is.EqualTo(typeof(ushort))); umformulieren

Guter Fang @mikkelbu. Ich werde dies als not a bug . @TobiasSekan Ich kann die Verwirrung sehen, aber effektiv ist Ihr erster Parameter TypeOf<Type> nicht ushort .

Okay, danke für die Infos

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen