2009-03-27 14 views
43

no puedo encontrar una comparación específica característica por característica de Moq y Rhino. Todas las preguntas son "el cual te gusta más y por qué" o "aquí está cómo se hace una maqueta simple en rinoceronte y como se hace en el moq".¿Cuáles son las capacidades de Moq y Rhino.mocks?

No encuentro una comparación profunda en ninguna parte. Soy consciente de las diferencias de sintaxis, no estoy buscando respuestas sobre eso. Busco una comparación capacidad. Por ejemplo:

  • Rhino tiene Expect.On() para roscado burlona. ¿Puede Moq hacer esto?

  • ¿Qué hay de Multi-burlarse (implementando múltiples interfaces con un simulacro). ¿Puede Moq hacer esto?

  • Creo que Moq ahora puede burlarse de los miembros protegidos. ¿Puede Rhino hacer esto?

Editar: terminé mirando a algunos de los otros marcos .Net también.

+0

vea también http://stackoverflow.com/questions/642620/what-should-i-consider-when-choosing-a-mocking-framework-for-net –

+0

- Marque [aquí] (http: // code .google.com/p/moq/wiki/Inicio rápido) para las características moq - Comprobar [aquí] (http://ayende.com/projects/rhino-mocks.aspx) para la burla de Rhino cuenta con – rguerreiro

Respuesta

88

Gracias a todos los que respondieron durante las últimas semanas. Terminé escribiendo una publicación de blog sobre mis hallazgos, ya que tuve que investigar tanto que parecía que podía resumirlos con la esperanza de ayudar a otros. El gráfico que he publicado organiza mis hallazgos:

alt text

Una advertencia, que se abordan en esta entrada del blog, es que el gráfico es útil para comprobar las capacidades, pero las ventajas reales para la mayoría de los marcos son su única caracteristicas. Elegí Moq al final debido a la API fácil de usar. Además, toda la información está sujeta a errores y cambios. Si no está de acuerdo con algo en el cuadro, publique un comentario.

+0

Actualicé el gráfico un poco. Es posible que haya un par de revisiones en el próximo momento, tengo algunas otras líneas adicionales que podrían agregarse. – womp

+3

+1 buen gráfico, hace un buen resumen – zombat

+0

Hola @womp, ¿puedes volver a subir el gráfico? El enlace está redireccionando a algún signo japonés ;-) –

2

No soy un experto de ninguna manera, pero creo que el Rhino agregó algo de la sintaxis de Moq para que la curva de aprendizaje se haya reducido a lo que esperaría con MoQ. Trabajé con ambos con pruebas y parte de la sintaxis era casi idéntica. Inicialmente iría con MoQ porque era más fácil, pero luego mi amigo me mostró las últimas actualizaciones y lo similares que eran. Solo dejándote saber.

+0

de hecho, me parece que esta es una de las cosas que hace que Rhino sea más difícil. Casi toda la documentación es para las sintaxis de edad avanzada, por lo que terminan mezclarlos cuando se mira en los ejemplos, dando lugar a todo tipo de errores extraños:/ – womp

+2

De acuerdo.Parece que han intentado hacer ciertas cosas de múltiples maneras sin eliminar la "vieja" forma de hacerlo. Supongo que es por compatibilidad. Honestamente, tengo una mejor comprensión de MoQ solo porque no intenta diferir una sintaxis falsa o falsa y no funky. MoQ es bastante agradable con eso – rball

1

Rhino tiene GetArgumentsForCallsMadeOn() que IMO hace que sea más fácil verificar los argumentos en algunos casos.

-1

Podría agregar "Verificación del comportamiento" en estos. Esa parece ser la mayor limitación de Moq, que Rhino (que no está seguro acerca de los demás) no tiene ningún problema.

+2

¿Qué hay de limitado en la verificación del comportamiento en Moq? No he encontrado ninguna limitación todavía. Tiene Verify() y VerifyAll(), y usted puede establecer que cualquier llamada a Setup() sea Verificable independientemente del valor de retorno. – womp

0

Para mayor información, señalaré que ahora hay NMock3 en CodePlex. Tiene una migración fácil desde NMock2, simplemente reemplace la referencia a NMock2.dll con una referencia a NMock3.dll. Agrega seguridad de tipo y soporte para refactorización.

Cuestiones relacionadas