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?
Respuesta
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.
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. –
¡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
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".
Me gusta mucho su libro también. De hecho, tengo una copia junto a mí en este momento. – Maurice
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.
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.
- 1. El asistente BeginCollectionItem de Steve Sanderson no enlazará correctamente
- 2. ¿Alguien ha utilizado el marco rhomobile?
- 3. ¿Alguien ha utilizado waf para crear aplicaciones Java?
- 4. ¿Alguien ha utilizado con éxito el nuevo WCF REST Starter Kit y lo usaría de nuevo?
- 5. ¿Alguien ha probado el lino?
- 6. ¿Alguien ha intentado vss2git?
- 7. ¿Alguien ha analizado Wiktionary?
- 8. ¿Alguien ha usado Ant4Eclipse con el Proyecto Lombok?
- 9. ¿Alguien ha intentado usar ZooKeeper?
- 10. ¿Alguien ha intentado con Webistrano?
- 11. ¿Con qué fines ha utilizado T4?
- 12. ¿Cuándo ha utilizado la programación dinámica en el campo?
- 13. ¿Ha utilizado alguno de los intérpretes de C++ (no compiladores)?
- 14. MySQL: ¿Alguien ha usado el motor de almacenamiento TokuDB?
- 15. ¿Alguien ha usado JS.Class y le ha gustado?
- 16. ¿Alguien ha encontrado que la recolección de basura sea útil?
- 17. ¿Alguien ha usado HipHop para PHP?
- 18. ¿Alguien ha intentado NetBeans 6.5 Python IDE?
- 19. ¿Alguien ha adoptado con éxito JaikuEngine?
- 20. ¿Alguien ha integrado correctamente chat con redmine?
- 21. ¿Alguien ha usado SciPy con IronPython?
- 22. ¿Alguien ha usado Jaxer en producción?
- 23. ¿Alguien ha usado Delphi para programar VST?
- 24. ¿Alguien ha implementado una wiki en NodeJS?
- 25. En WPF, ¿alguien ha animado una cuadrícula?
- 26. ¿Cuándo ha utilizado la palabra clave "mutable" de C++?
- 27. ¿Alguien ha intentado utilizar el puerto iSeries Python?
- 28. ¿Alguien ha hecho crosshairs que siguen el mouse en JFreeChart?
- 29. ¿Alguien ha usado el servidor web GWAN en producción?
- 30. ¿Para qué ha utilizado colas de mensajes sysv/posix?
No lo he usado todavía, pero la idea de desacoplar el navegador de la prueba de integración es muy atractiva. –
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. –
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