Nunit: 制約付きのオブジェクトタイプをテストできません

作成日 2018年01月08日  ·  4コメント  ·  ソース: nunit/nunit

こんにちは、制約付きのオブジェクトタイプをテストすることはできませんが、従来のアサートは引き続き機能します

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

最も参考になるコメント

こんにちは@TobiasSekan。 これは予想されることだと思います。 古典的なアサーションでは、2つのタイプを比較しているだけです。 制約「_testsは、実際の値が引数として指定された型であるか、派生型であるかをテストします。_」であり、値typeof(TestEnum).GetEnumUnderlyingType()System.RuntimeTypeです。

同様に、以下も失敗します(同じ種類のメッセージで)

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

一方

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

うまくいくだろう。 制約はいつでもAssert.That(typeof(TestEnum).GetEnumUnderlyingType(), Is.EqualTo(typeof(ushort)));言い換えることができます

全てのコメント4件

どのプラットフォームとどのnunitバージョンをお願いしますか?

こんにちは@TobiasSekan。 これは予想されることだと思います。 古典的なアサーションでは、2つのタイプを比較しているだけです。 制約「_testsは、実際の値が引数として指定された型であるか、派生型であるかをテストします。_」であり、値typeof(TestEnum).GetEnumUnderlyingType()System.RuntimeTypeです。

同様に、以下も失敗します(同じ種類のメッセージで)

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

一方

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

うまくいくだろう。 制約はいつでもAssert.That(typeof(TestEnum).GetEnumUnderlyingType(), Is.EqualTo(typeof(ushort)));言い換えることができます

グッドキャッチ@mikkelbu。 これをnot a bugとして閉じます。 @TobiasSekan混乱が見られますが、TypeOf<Type>ではなくushortです。

さて、情報をありがとう

このページは役に立ちましたか?
0 / 5 - 0 評価