2009-08-13 5 views
12

que estaba buscando en otras maneras de probar las aplicaciones ASP.NET MVC y corrió en Steve Sanderson de MvcIntegrationTestFramework. El enfoque parece bastante prometedor, pero me preguntaba si alguien tenía alguna experiencia real para compartir.¿Alguien ha utilizado el MvcIntegrationTestFramework de Steve Sanderson?

+0

No lo he usado todavía, pero la idea de desacoplar el navegador de la prueba de integración es muy atractiva. –

+0

Pero para mí la integración implica la, um, integración de las capas. Y el navegador (especialmente javascript y ajax) es, de hecho, una capa que debe probarse. –

+0

Hola James. Eso, sin duda, debe hacerse, pero en mi experiencia es difícil de automatizar y, debido a las diferencias del navegador, debe hacerlo para varios de ellos. Así que esto no es un reemplazo sino una adición a las pruebas del navegador. Y útil para encontrar regresiones. – Maurice

Respuesta

7

estoy teniendo muy buenos resultados de ella. No me importa lo que alguien más aquí dice sobre la necesidad de probar vistas, tan pronto como agregue su primera línea de código a una vista, incluso si el código está estrictamente relacionado con la presentación, introduce un potencial de errores para los cuales sería una buena idea escribir pruebas automáticas. Mi principal interés es captar la mayor cantidad posible de errores/excepciones de pantalla blanca y pantalla amarilla. Para ello He estado usando el fragmento de la entrada del blog de introducción de Steven para asegurar que la página representada adecuadamente sin lanzar ninguna excepción:

Assert.IsTrue(result.ResponseText.Contains("<!DOCTYPE html")); 

Las pequeñas trampas que veo con este marco podría ser:

  • Si su sitio web realiza una vinculación de modelo bastante compleja entre las vistas y los métodos de acción, puede crear algunas NameValueCollections bastante grandes, como en este ejemplo (un método de acción que realmente toma un objeto de modelo de vista LogonModel), ya que No veo ninguna forma de pasar cualquier tipo de objeto de modelo de vista complejo a sus métodos de acción utilizando este marco:

var result = browsingSession.ProcessRequest("/account/logon", HttpVerbs.Post, new NameValueCollection { {"UserName","myName"}, {"Password", "myPassword"}, {"returnUrl", "/home/myActionMethod"} });

  • Ejecución browsingSession.ProcessRequest ("URL") crea una aplicación host/contexto que en realidad ejecuta el código web que se está probando el uso de la configuración en el proyecto que se está probando. Esto significa que las pruebas se ejecutan con lentitud y posiblemente modifiquen datos reales, ya que no veo una forma rápida y fácil de intercambiar repositorios de acceso a datos en su proyecto web bajo prueba con versiones falsas utilizando cualquier instalación incorporada en este marco de prueba. En otras palabras, probablemente necesites hacer la tuya usando algunos medios basados ​​en web.config.
+0

Seguimiento - Recomiendo encarecidamente moverme a MVC3 y usar RazorGenerator. Puede ejecutar MVC2 y MVC3 simultáneamente, migrando páginas web individuales a la vez, lo cual me parece que funciona sin problemas. Aunque el marco de Steve Sanderson funciona bien dentro de las limitaciones de MVC2, nos pareció extremadamente difícil administrar los cambios en las rutas de archivos codificadas que eran necesarias cuando utilizamos el marco de prueba en nuestras máquinas de desarrollo vs. en nuestro C.I. servidor. Ese problema no existe con RazorGenerator + MVC3. –

+1

¡Gracias por seguirme! ¿Puede explicar brevemente cómo RazorGenerator lo ayudó a reemplazar MvcIntegrationTestFramework para sus pruebas de integración? ¿De qué manera la precompilación de las vistas de Razor ayuda con eso? Tal vez has blogueado al respecto :-) – Oliver

0

No he utilizado este marco. Pero en base a mi experiencia de la lectura de su libro - Pro ASP.NET MVC Framework, y otro marco de validación xVal desarrolló, diría "Él es grande".

+0

Me gusta mucho su libro también. De hecho, tengo una copia junto a mí en este momento. – Maurice

0

experimentó con un poco y que podría ser muy útil en algunas situaciones. Un aprobado general y si veía más trabajo en él lo usaría en un proyecto futuro.

no se realizó como ya tienen WatIn instalación y el cuidado de algunas cosas que no le gustaría para hacer frente de nuevo en este marco. P.ej. autenticación a través de un diálogo, que probablemente requeriría un cambio de código.

1

Después de leer ardave's answer hace un tiempo, de hecho fuimos a probarlo por nosotros mismos por nuestra nueva aplicación basada Orchard Marinas.info.

Antes que nada, recomiendo a cualquiera que empiece desde un tenedor de this version ya que es aún más fácil de configurar que el original.

Para cualquier aplicación MVC3 "normal" simplemente funciona. Desafortunadamente, junto con Orchard no funcionó bien, al menos no con una versión no modificada de sus Global.asax.cs. Así que seguimos bajando al browser based testing road pero seguimos usándolo para ejecutar los comandos de Orchard dentro de la aplicación, que es lo suficientemente rápido.

Cuestiones relacionadas