Почему Assert.IsInstanceOfType(0.GetType(), typeof(int)) терпит неудачу?

Я новичок в модульном тестировании, используя Microsoft.VisualStudio.TestTools.UnitTesting;

0.GetType() на самом деле System.RuntimeType, так какой тест мне нужно написать, чтобы пройти Assert.IsInstanceOfType(0.GetType(), typeof(int))?

--- далее, это моя ошибка пользователя... Assert.IsInstanceOfType(0, typeof(int))


person Dave    schedule 26.03.2009    source источник
comment
Что вы пытаетесь достичь? Нет смысла утверждать, что константа имеет определенный тип. Если это игрушечный код для примера, он недостаточно конкретен.   -  person Michael Meadows    schedule 26.03.2009
comment
Этот образец, если ради этого вопроса. В моем реальном тесте я делаю некоторые размышления и получаю свойство типа int, но тест не проходит... однако Assert.IsTrue(0.GetType() == typeof(int)) пройдет   -  person Dave    schedule 26.03.2009
comment
Я бы сказал, что этот вопрос можно удалить, это бесполезно   -  person Dave    schedule 26.03.2009
comment
Хотя это может никому не помочь сейчас, это может быть полезно в будущем. Я всегда благодарен за то, что нахожу подсказки/ответы в сообщениях блога двухлетней давности, которые помогают решить проблему.   -  person Samuel    schedule 26.03.2009
comment
Я скажу, что этот вопрос действительно решил мою проблему, хотя он не имел ничего общего с 0.gettype(), но будучи новичком в тестировании, также тестирование синтаксиса там не самое лучшее. ваше здоровье.   -  person Brian    schedule 08.10.2009


Ответы (2)


Измените вызов на следующий

Assert.IsInstanceOfType(0, typeof(int));

Первый параметр — это тестируемый объект, а не тип тестируемого объекта. передав 0.GetType(), вы сказали, что «RunTimeType» является экземпляром System.int, который является ложным. Под одеялом вызов просто разрешается

if (typeof(int).IsInstanceOfType(0))
person JaredPar    schedule 26.03.2009

Похоже, это должно быть

Assert.IsInstanceOfType(0, typeof(int))

Ваше выражение в настоящее время оценивает, является ли RunTimeType экземпляром RunTimeType, а это не так.

person Lee    schedule 26.03.2009