2010-03-16 11 views
11

Hice una búsqueda en el foro y no encontré una pregunta similar. Estoy buscando tomar una decisión final sobre nuestro marco de referencia burlón como una mejor práctica. He decidido sobre Moq ... hasta que descubrí recientemente que MS finalmente creó un marco burlón llamado Moles que parece funcionar de manera similar. a TypeMock a través de la sensivilidad de API de perfilador, etc.¿Alguien que usa Moles/Pex en producción?

Hay un millón de subprocesos 'NMock vs Moq vs TypeMock vs Rhino ....' aquí. Pero nunca vi a Moles involucrado. De hecho, ni siquiera sabía si existía hasta hace poco tiempo. ¿Alguien lo está usando? ¿En producción? Alguien volcó su antiguo marco de burla, y si es así, ¿cuál? ¿Cómo se compara con los marcos de burla que has usado?

gracias ... ps, estamos usando VS2008 y nos estamos moviendo a 2010 en breve.

+0

mi opinión fue que Moles no es solo un marco burlón. Es más un interceptor, lo que no me gustó de Moles: genera más código. Es más cinta adhesiva: no te lleva a limpiar tu diseño. p.ej. Just Mole DateTime.Now ya! no hace que pongas la responsabilidad detrás de un rol de Reloj. Por otro lado, Moles podría ser una opción fácil si se trata de una pila existente de código heredado. – Gishu

+2

Moles ha sido reemplazado por Fakes http://msdn.microsoft.com/en-us/library/hh549175(v=vs.110).aspx en visual studio 2012 –

Respuesta

7

Estoy en el mismo escenario en el que se encuentra, por lo que me gustaría comentar mis experiencias.

Tanto Typemock como Moles tienen en mente el objetivo del aislamiento. Especialmente para esas molestas clases selladas, métodos no virtuales.

Creo que se necesita un marco de aislamiento, como los mencionados anteriormente, especialmente si se encuentra en las últimas fases de desarrollo y/o no tiene control de la base de código.

Estas son las ventajas en Typemock, todavía no he descubierto con lunares

  • Soporte para herramientas de cobertura de código (NCover y Partcover)
  • Soporte para interceptar/verificación de partes privadas (métodos/propiedades) [ Si esto es controvertido]
  • producto más pulido, y funcionamiento rápidamente con una API intuitiva (todavía jugando con lunares incluso trabajar a la derecha)

espero Moles matur es el producto lanzado, pero el comienzo de mi retoque no parece ser diferente de otros proyectos de MS Research; generalmente sin pulir, pero esa parece ser la naturaleza de ese tipo de proyectos.

+0

gracias por la información – dferraro

7

Creo que los moles están llevando la burla al siguiente nivel, es mucho más poderosa.

¿Qué quiere decir con 'en producción' ?. Los lunares solo son útiles en las pruebas unitarias. Tiene un serio impacto en el rendimiento y también permite el código inseguro en la producción (¿Alguna vez se pensó en reemplazar una función IsAuthorized para que sea verdadera?).

Moles son utilizables tanto en 2008 y 2009.

la esperanza que esto responda a su pregunta.

+0

gracias. Me refiero a escribir código de producción usando TDD usando Moles cuando escribí 'Producción' – dferraro

7

Moles se usa internamente en Microsoft por varios equipos de productos.

1

¡Moles and Pex es un cambio de paradigma! es demasiado esperar de un frameowrk libre. Hasta ahora no he encontrado ninguna razón para no usarlo a menos que tengas una base de código de tecnología cruzada, pero siempre y cuando .net I moles y Pex definitivamente sea la respuesta.

1

Bueno, puede haber, hay algunos problemas de enhebrado que parecen recortarse en el medio, es muy difícil de reproducir. Básicamente, se bloquea VS 2010 cuando incluso intentas poner un punto de interrupción en el proceso adjunto. Sucedió pocas veces para mí, no solo en una sola máquina, sino que más tarde desapareció por un motivo desconocido.

Como se produce el desvío, la depuración es un baile entre el código y el desvío, que puede ser difícil de manejar inicialmente y si hay una excepción durante el mismo, es simplemente difícil romper la excepción.

Pruebas auto generadas y PUT: es difícil captar qué mensaje están tratando de transmitir, es decir, si se cambia el patrón de codificación o algo así como si intenta generar una prueba parametrizada basada en la interfaz pero dependiendo de la clase bajo prueba , auuto gen PUT podría no ser la mejor manera de aprovechar las pruebas parametrizadas.

En general, hay una curva de aprendizaje más el marco también tardará en madurar. El lado positivo, el concepto es bueno y el costo de mantenimiento (si se implementa correctamente) y el tiempo de respuesta del equipo que respalda PEX es realmente positivo, a veces se obtiene una respuesta útil en 2 horas en el foro de PEX.

Saludos Yogesh Pawar

0

Si por "la producción" que escriba usando en un producto que se utiliza en la producción de entonces absolutamente!

Estamos utilizando Moles para aislar la funcionalidad en nuestras pruebas unitarias en un proyecto de alto perfil para compañías como Google y McDonalds. Por supuesto, las pruebas unitarias no se ejecutan en el servidor de producción, por lo que Moles nunca se implementará en la producción.

Cuestiones relacionadas