2010-04-14 48 views
26

Tengo que elegir simulacro de marco para el nuevo proyecto.Rhino simulacro vs Typemock vs JustMock vs

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

sé que es JustMock i fase beta pero es un aspecto muy bueno en este momento (muy similar a Typemock)

Editar: Me'v ¿Qué hay de MS Mole?

+3

No se olvide de MoQ. Ese es mi favorito. – Will

+3

Moq es lo mejor que he usado. Promueve un código bueno, limpio y comprobable también. http://stackoverflow.com/questions/64242/rhino-mocks-typemock-moq-or-nmock-which-one-do-you-use-and-why – Finglas

+1

También hay FakeItEasy que proporciona falsificaciones/stubs/mocks naturales como Rhino, pero una sintaxis más limpia y mejor DSL contextual para la configuración. http://code.google.com/p/fakeiteasy –

Respuesta

21

Antes de que hubiera JustMock se hizo esta pregunta y el answers can be found here. Hay una muy buena Mocking framework comparison - todavía no tiene JustMock, pero puede ver la sintaxis y las capacidades de cada framework de burla de .NET.

RhinoMocks (y Moq) son tanto de código abierto libre de utilizar los proyectos que pueden crear objetos falsos heredando el tipo - lo que significa que pueden métodos estáticos no falsos, estructuras y clases cerradas.

Typemock Isolator utiliza el perfilador CLR para interceptar llamadas .NET y cambiarlas durante el tiempo de ejecución y puede simular 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 encuentran la capacidad de simular prácticamente cualquier cosa, incluidas las bibliotecas de terceros y el código heredado, una necesidad.

JustMock es un reproductor nuevo y en este momento solo en versión Beta, tiene algunos de Typemock Isolator y se puede ejecutar sin la API profiler, en este modo es como RhinoMocks. Aún no se sabe cuánto de las capacidades de Typemock Isolator realmente tiene. En este momento, parece que es un buen comienzo en la dirección correcta, pero todavía queda algo de distancia antes de que pueda ser una opción válida.

+0

Moq se puede usar para stubs, fakes y objetos MOCK. – Finglas

+0

Todos los frameworks burladores pueden hacer eso - la pregunta es a qué objetos –

+1

JustMock y TypeMock se les adjunta una etiqueta de precio y eso vale la pena mencionar. – Johan

1

No le diré cuál es la mejor opción porque cada una tiene sus pros y sus contras. Siempre usé Rhino Mocks porque es gratis y hay una gran comunidad alrededor y es fácil encontrar ayuda.

TypeMock no es gratuito (supongo). Sin embargo, TypeMock es genial si quieres, por ejemplo, probar el código heredado con tipos privados o estáticos de un miembro. Otros marcos burlones no pueden hacerlo. Un inconveniente es que no lo obliga a escribir código comprobable que tiene otros beneficios que solo la capacidad de prueba.

No conozco JustMock, así que no puedo decir cómo funciona.

Te recomiendo que pruebes todas y elijas una con la que te sientas cómodo. Sin embargo, si necesita probar el código heredado, elija que TypeMock.

Espero que otros le den más detalles.

14

Cambié recientemente de RhinoMocks a Moq.

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

2

Ver también: https://stackoverflow.com/questions/37359/what-c-mocking-framework-to-use/2608634#2608634

estoy actualmente en la Unidad de Pruebas Moq, y debo decir que funciona bastante bien! - reformular: ¡funciona genial! No he utilizado ninguno de los otros marcos de burla que mencionas, así que no puedo darte una comparación. Pero puedo decir que estoy contento de haber elegido a Moq como mi primer marco de burla. Las expresiones lamda son realmente agradables y también bastante ligeras y fáciles de leer (la sintaxis de grabación/reproducción en la mayoría de los otros frameworks burlones no está realmente haciendo buena lectura)

Además de eso (y esto es un poco fuera de tema) Voy a utilizar Ninject en un futuro cercano como IoC Container, y ambos marcos van de la mano. Ninject también tiene Lamda e incluso proporciona compatibilidad con contenedores automáticos para Moq (usando una extensión). Así que si usted también está planeando utilizar un contenedor IoC se puede comprobar esta combinación impresionante:]

11

[Renuncia - Trabajo en Telerik]

sólo algunos puntos acerca JustMock. Su API es más similar a la API de Moq que RhinoMocks, por lo que si está familiarizado con Moq no debería tener problemas para aprender JustMock. Lo que hemos intentado hacer mejor en JustMock es tener una mejor historia al burlar llamadas secuenciales, por ejemplo. Además, como ya se mencionó, JustMock hace posible simular clases estáticas y métodos/propiedades, clases selladas, métodos no virtuales y propiedades, y así sucesivamente, utilizando la misma sintaxis Moq-like. 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 se hace referencia directamente al ensamblaje Telerik.CodeWeaver.Hook, pero desafortunadamente eso no está documentado en este momento. Si alguien quisiera hacer eso, podría abrir un ticket de soporte y estaremos encantados de ayudarle.

Espero que esto ayude.

8

También compruebe 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 utilizar para proyectos comerciales y se apoya en Visual Studio 2008 y 2010.

+1

es feo codificar y todo basado en xml ... GROSS. – PositiveGuy

Cuestiones relacionadas