with unitarias unit tests setup pruebas objetos mock and c# silverlight nunit moq

c# - tests - Pruebas unitarias con Moq, Silverlight y NUnit



setup mock c# (5)

La respuesta en este momento parece ser la plantilla del proyecto de la nunciada de Silverlight de Jamie Cansdale:

http://weblogs.asp.net/nunitaddin/archive/2008/05/01/silverlight-nunit-projects.aspx

Esta plantilla es fantástica y exactamente lo que estaba buscando. ¡Funciona con Resharper también! Espero que esto le ahorre a alguien unas horas.

Estoy intentando probar la unidad de un proyecto de Silverlight 3. Estoy usando:

Cuando escribo una prueba que no usa Moq , funciona como debería.

Cuando uso Moq fuera de una prueba, Moq funciona como debería. (Me burlé de una interfaz e hice una verificación en un manejador de botones como prueba).

Pero cuando ejecuto una prueba de unidad que usa Moq, siempre obtengo esto:

System.IO.FileNotFoundException: Could not load file or assembly ''System, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'' or one of its dependencies. The system cannot find the file specified. at Moq.ExpressionExtensions.ToStringFixVisitor..ctor(Expression expression) at Moq.Interceptor.AddCall(IProxyCall call, SetupKind kind) in c:/Build/Moq Drop/moq/WorkingDirectory/trunk/Source/Interceptor.cs: line 104 at Moq.Mock.<>c__DisplayClassc`2.<Setup>b__b() in c:/Build/Moq Drop/moq/WorkingDirectory/trunk/Source/Mock.cs: line 387 at Moq.PexProtector.Invoke<T>(Func`1 function) in c:/Build/Moq Drop/moq/WorkingDirectory/trunk/Source/PexProtector.cs: line 17 at Moq.Mock.Setup<T1,TResult>(Mock mock, Expression`1 expression) in c:/Build/Moq Drop/moq/WorkingDirectory/trunk/Source/Mock.cs: line 371 at Moq.Mock`1.Setup<TResult>(Expression`1 expression) in c:/Build/Moq Drop/moq/WorkingDirectory/trunk/Source/Mock.Generic.cs: line 194 at SilverlightMoq.Test1.TestFirst() in Test1.cs: line 23

¿Cómo se puede arreglar?

Reconstruí ambos conjuntos para SL 3 con los mismos resultados.

Pude ejecutar la prueba en el marco de prueba de la unidad de Microsoft Silverlight.

http://code.msdn.microsoft.com/silverlightut/

Este es el marco de prueba en el navegador que parece ser la forma estándar de probar la unidad SL. Los problemas son:

  1. debes ejecutar todas tus pruebas a la vez
  2. es brutalmente lento

    (~ 5 veces más lento que las mismas pruebas que se ejecutan en el marco de prueba nunit)

¿Alguien sabe de algún otro marco de prueba SL o una mejor manera de ejecutar las pruebas en este marco?

Cuando intento usar el plugin de TestDriven.Net vs, obtengo un error:

System.IO.FileNotFoundException: No se pudo cargar el archivo o ensamblado ''Sistema, ...


Suena como un problema de Silverlight 3. ¿Puedes obtener las fuentes de Moq.Silverlight y NUnitSilverlight y compilarlas en Silverlight 3 binarios? Parece que estos están construidos con SL 2.


Lo que funcionó para mí es asegurarme de que la propiedad ''Copiar local'' (en la grilla de propiedad IDE (F4) del sistema de referencia) esté configurada en verdadero.


Creé una herramienta para usar con integración continua y para acelerar el TDD general de Silverlight ...

http://www.StatLight.net

Ahora tiene soporte completo para cualquier versión de NUnit compilada para ejecutarse bajo Silverlight.


Gracias a la información proporcionada por Lee y al enlace que brindó ( http://weblogs.asp.net/nunitaddin/archive/2008/05/01/silverlight-nunit-projects.aspx ) pude obtener mi NUnit de Silverlight pruebas que se ejecutan en Hudson con cobertura de código! Cosas increíbles, oye! Y también funcionan con ReSharper , así que no siento que me castiguen más (con un retraso de 20 segundos) por hacer TDD en Silverlight.

Entonces, ¿qué hice exactamente?

  • Hice un proyecto de Silverlight Unit Test Framework para SL3:

    ( http://www.jeff.wilcox.name/2010/05/sl3-utf-bits/ )

  • Luego cambié todas las referencias de los ensamblajes de Silverlight del proyecto de prueba (excepto ''mscorlib'') a ''Copy Local: True'' como se detalla en:

    ( http://weblogs.asp.net/nunitaddin/archive/2008/05/01/silverlight-nunit-projects.aspx )

  • Luego agregué referencias al marco de Silverlight NUnit 2.5.1 proporcionado en el siguiente blog (hay otras versiones proporcionadas por Jeff Willcox en el blog que menciono a continuación y Jamie Cansdale en su blog anterior, pero esta fue la última versión que encontré):

    ( http://wesmcclure.tumblr.com/post/152727000 )

  • ¡Eso es! Después de eso, pude escribir mis pruebas, ejecutarlas en ReSharper y en el corredor de pruebas de NUnit. Además, podría usar ncover para obtener informes de cobertura.

  • EDITAR: Ah, sí, y si ejecuta alguna prueba que requiera el hilo de la interfaz de usuario, obtendrá un error de hilo cruzado en ReSharper. Esto se resuelve ejecutando esas pruebas dentro de una llamada Deployment.Current.Dispatcher.BeginInvoke(...) .

  • Después de usar la unidad para mis pruebas, no pude ejecutarlas desde la interfaz web de SL Test Framework, pero eso no fue un gran problema para mí. Si necesita hacerlo funcionar, eche un vistazo a:

    ( http://www.jeff.wilcox.name/2009/01/nunit-and-silverlight/ )

  • PD: También creé un proyecto NUnit para el corredor de la consola NUnit para ejecutar mis pruebas desde la consola NUnit (No intente incluir sus ensamblajes de prueba que no sean SL en el mismo proyecto NUnit, no funcionará porque usa una nunit diferente. biblioteca de framework).

También probé StatLight ( http://statlight.codeplex.com/ ) para ejecutar las pruebas desde la consola, y funcionó bien para mí, pero soy fan de ReSharper y NUnit, así que esa no era la mejor opción para mí . También hubo un error extraño con StatLight en el que no estaba cargando correctamente los recursos de mi proyecto de prueba, lo que dio como resultado algunas fallas de prueba.

Espero que esto ayude a alguien. No he encontrado nada nuevo aquí, sino que simplemente he consolidado toda la información que desearía que alguien me hubiera resumido por adelantado. Cuando tenga algo de tiempo, bloguearé sobre esto en términos de crear un proyecto Habanero framework ( http://www.habanerolabs.com ) con SilverLight.

Uf. ¡Eso es todo amigos!