moq rhino-mocks typemock justmock

moq - Rhino mock vs Typemock vs JustMock vs



rhino-mocks (6)

Necesito elegir marco simulado para nuevo proyecto.

¿Cuáles son los pros y los contras de esos marcos? ¿Alguna tabla de comparación?

Sé que JustMock está en fase beta, pero se ve muy bien en este momento (muy similar a TypeMock)

Edit: I''v ¿Qué hay de MS Mole?


Antes de que existiera JustMock, se hizo esta pregunta y las respuestas se pueden encontrar aquí . Hay una muy buena comparación de Mocking framework : aún no tiene JustMock, pero puedes ver la sintaxis y las capacidades de cada .NET Mocking Framework.

RhinoMocks (y Moq ) son proyectos de código abierto que pueden crear objetos falsos al heredar el tipo, lo que significa que no pueden falsificar métodos estáticos, estructuras y clases selladas.

Typemock Isolator utiliza el generador de perfiles CLR para interceptar llamadas .NET y cambiarlas durante el tiempo de ejecución y puede falsificar prácticamente cualquier cosa. Typemock también puede falsificar objetos que no puede "alcanzar" desde la prueba porque se crean instancias dentro del código de producción. Algunos lo llaman "magia negra", pero otros consideran que la capacidad de falsificar prácticamente cualquier cosa, incluidas las bibliotecas de terceros y el código heredado, es una necesidad.

JustMock es un nuevo jugador y ahora mismo solo en Beta, tiene algo de Typemock Isolator y puede ejecutarse sin la API del generador de perfiles, en este modo es como RhinoMocks. Todavía no se ha descubierto la cantidad de funciones de Typemock Isolator que realmente tiene. En este momento, parece que es un buen comienzo en la dirección correcta, pero todavía tiene que recorrer un poco antes de que pueda ser una opción válida.


No te diré cuál es el mejor porque cada uno tiene sus pros y sus contras. Siempre usé Rhino Mocks porque es gratis, hay una gran comunidad y es fácil encontrar ayuda.

TypeMock no es gratis (supongo). Sin embargo, TypeMock es excelente si desea, por ejemplo, probar el código heredado con tipos privados o estáticos y miembros. Otros marcos burlones no pueden hacerlo. Un inconveniente es que no lo obliga a escribir código verificable que tiene otros beneficios que solo la capacidad de prueba.

No sé JustMock, así que no puedo decirte cómo funciona.

Te aconsejaría que los pruebes todos y que elijas uno con el que te sientas cómodo. Sin embargo, si necesita probar el código heredado, elija que TypeMock.

Espero que otros te den más detalles.


Recientemente cambié de RhinoMocks a Moq .

Ambos tienen capacidades similares pero Moq tiene una API mucho más limpia


También revisa Microsoft Moles , un marco de aislamiento para .NET que permite reemplazar cualquier método .NET con un delegado personalizado.

Moles tiene una versión que se puede usar para proyectos comerciales y es compatible con Visual Studio 2008 y 2010.


También vea: https://.com/questions/37359/what-c-mocking-framework-to-use/2608634#2608634

Actualmente estoy haciendo Unit Test en Moq, ¡y debo decir que funciona bastante bien! - reformular: funciona muy bien! No he usado ninguno de los otros marcos burlones que mencionas, así que no puedo darte una comparación. Pero puedo decir que me alegro de haber elegido Moq como mi primer marco de burla para intentarlo. Las expresiones lamda son realmente agradables y también son bastante ligeras y fáciles de leer (la sintaxis de grabación / repetición en la mayoría de los otros marcos de simulacros no está haciendo nada bien tu legibilidad)

Además de eso (y esto es un poco fuera de tema) usaré Ninject en un futuro próximo como IoC Container, y ambos marcos van de la mano. Ninject también tiene Lamda e incluso proporciona soporte de contenedor de auto-burla para Moq (usando una extensión). Así que si también planeas usar un contenedor de IoC, puedes comprobar esta combinación impresionante:]


[Descargo de responsabilidad - Yo trabajo en Telerik]

Sólo algunos puntos sobre JustMock. Su API es más similar a la API de Moq que a la de RhinoMocks, por lo que si está familiarizado con Moq, no debería tener problemas para aprender a usar JustMock. Lo que hemos intentado hacer mejor en JustMock es tener una mejor historia al simular llamadas secuenciales, por ejemplo. Además, como ya se mencionó, JustMock permite simular clases y métodos / propiedades estáticas, clases selladas, métodos y propiedades no virtuales, etc., utilizando la misma sintaxis similar a Moq. También gracias a esto en JustMock es posible hacer burlas parciales.

Por cierto, la "magia negra" que Dror mencionó también es posible cuando se usa JustMock si hace referencia directamente al ensamblaje Telerik.CodeWeaver.Hook, pero desafortunadamente no está documentado en este momento. Si alguien quiere hacerlo, podría abrir un ticket de soporte y estaremos encantados de ayudarle.

Espero que esto ayude.