2009-03-26 19 views
42

Soy un poco nuevo en pruebas unitarias, usando Microsoft.VisualStudio.TestTools.UnitTesting;¿Por qué falla Assert.IsInstanceOfType (0.GetType(), typeof (int))?

El 0.GetType() es en realidad , así que ¿qué tipo de prueba debo escribir para pasar Assert.IsInstanceOfType(0.GetType(), typeof(int))?

--- seguimiento, esto es mi propio error del usuario ... Assert.IsInstanceOfType(0, typeof(int))

+0

¿Qué estás tratando de lograr? No tiene sentido afirmar que una constante es de un tipo específico. Si se trata de código de juguete por el bien de un ejemplo, no es lo suficientemente específico. –

+0

Esta muestra si por el bien de esta pregunta. En mi prueba real, estoy reflexionando y obteniendo una propiedad que es de tipo int pero la prueba falla ... sin embargo, Assert.IsTrue (0.GetType() == typeof (int)) pasará – Dave

+0

. decir que esta pregunta se puede eliminar, no es útil – Dave

Respuesta

68

El cambio está siendo probado el objeto de la llamada a la siguiente

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

El primer parámetro, no el tipo de el objeto que se está probando. pasando 0.GetType(), usted decía que era "RunTimeType" una instancia de System.int que es falsa. Bajo las sábanas Ts llaman simplemente resuelve a

if (typeof(int).IsInstanceOfType(0)) 
16

parece que debería ser

Assert.IsInstanceOfType(0, typeof(int)) 

Su expresión está evaluando para ver si RuntimeType es una instancia de RuntimeType, que no lo es.

Cuestiones relacionadas