Pregunta

Estoy empezando a hacer Test Driven Development, y me pregunto las principales diferencias entre RhinoMock, Typemock y NUnit incorporado en burlarse?

Cualquier información sería muy apreciada!

¿Fue útil?

Solución

Typemock es un producto comercial (lo que significa que tendrá que pagar por ello), pero le permitirá burlas de objetos concretos - a diferencia de RhinoMocks / NUnit / MoQ que sólo puede burlarse de una clase de interfaz / abstracto. ¿Cómo se logra esto está al borde de la magia negro, pero hace algunas cosas muy inteligentes con el CLR.

Esto puede ser particularmente útil cuando se utilizan bibliotecas en su proyecto que no utilizan muchas interfaces. Por lo que podría, por ejemplo, utilizar Typemock para burlarse de un DataContext LinqToSql, u objetos de SharePoint. Sin embargo, si está utilizando Typemock esto es no es excusa para el mal diseño de la aplicación .

Por lo que yo sé, aparte de las diferencias de sintaxis menores, la mayoría de los marcos burlones se han alejado del modelo de grabación / reproducción de edad. Comúnmente, configurar sus expectativas burla al escribir usando una interfaz fluida.

Personalmente, Sólo he utilizado MoQ y i <3 ella.

Otros consejos

Un video llamado TDD - Comprensión de objetos Mock por Roy Osherove es muy útil en el aprendizaje de las diferencias de las diferentes bibliotecas burlones. Él no va en gran detalle de cada aspecto, pero lo suficiente para que usted entienda. Espero que esto ayude. Roy es también el jefe de arquitectura de Typemock y es una figura muy influyente en el ámbito de la unidad de pruebas. No podría recomendar lo suficiente vídeo para alguien que quiere aprender a utilizar burlas y también aprender acerca de la biblioteca disponible.

La principal diferencia entre Typemock y la biblioteca de código abierto es que Typemock utiliza la API de perfiles proporcionada por Microsoft en lugar de un dinámica de proxy . Esto permite Typemock para burlarse de clases concretas y métodos estáticos. En caso de que no está seguro de lo que el perfilador es, es la misma API que se utiliza por herramientas como dotTrace de JetBrain y perfiladores hormigas .Net de Redgate. Typemock sólo utiliza la API de una manera diferente a la falsificación (simulacro) lo que lo indique.

@RichardOD, gracias por el recordatorio, su libro " El arte de la Unidad de Pruebas " entra en mayor detalle en el video no lo hace. I poseer el libro y es muy informativo.

  • Rhino.Mocks es un código abierto, desarrollado de forma continua y mejorar el marco de uno de los desarrolladores más prolíficos de la industria. Ha estado alrededor por un tiempo y por lo tanto es compatible con un buen número de paradigmas diferentes por burlarse. Puede ser un poco más difícil de aprender, por tanto, en el sentido de que es posible encontrar tutoriales para la "vieja" de hacer las cosas. He aquí un consejo, SetUpResultFor () y Expect.Call () son las viejas formas de hacer las cosas. La nueva forma es mockObject.AssertWasCalled () .

No he tenido ninguna experiencia personal con estos otros, pero ...

  • MOQ es un código abierto, desarrollado de forma continua y mejorar el marco de uno de los desarrolladores de algo menos prolíficos de la industria (en comparación con Ayende). Es más reciente y por lo tanto carece de algunas características que tiene Rhino.Mocks. Esto no suele ser un problema ya que estas características tienden a ser los que están un poco en desuso en Rhino. He oído que a causa de esto, es un poco más fácil de aprender (marcos burlones no son difíciles de aprender por cierto).
  • NUnit Mocks es muy pintoresco en lo que va de burla. No es compatible con la sintaxis Organizar-Ley-Assert actualmente preferido sino que confía en esperar-Verify (grabación / reproducción). También se basa en cadenas para identificar los nombres de métodos y propiedades en lugar de lambdas. Esto hace que sea significativamente resistente a la refactorización. Este es un problema serio. Yo no lo recomendaría.
  • Typemock Isolater es un duro por pago burlarse marco de una empresa (propiedad de?) Roy Osherove - un tipo que conoce su prueba, pero también tiene algunas opiniones controvertidas ligeramente en cuanto a la manera de aplicarlo. Es muy intenso en cuanto a lo que puede hacer - llegar hasta el nivel de baja y modificación de cómo funcionan los objetos CLR. La filosofía detrás de Typemock no es realmente sin embargo el 100% TDD. Parte de los beneficios de TDD es que al abrazar las limitaciones de los marcos que imita va a diseñar un mejor código. Typemock explosiones esas limitaciones en pedazos. Por lo que yo sé que es utilizado principalmente por las personas que están tratando de obtener el código no tienen ningún control sobre bajo prueba.

Yo uso Typemock todo el tiempo y he encontrado que es una herramienta muy poderosa que puede mejorar la cobertura de mis pruebas de unidad. Esto es porque trabajo con SharePoint y sólo Typemock puedo permitir que me burlo a cabo clases de SharePoint -. Ya que son clases concretas y no Interfaces

Burlándose clases de SharePoint no es posible con RhinoMock, Moq, nUnit, etc ya que (creo) que requieren interfaces para burlarse de los objetos, en lugar de ser capaz de burlarse de las clases reales concretas.

Si el código no utilizan una gran cantidad de interfaces, y que no requieren burlarse clases concretas continuación Typemock es un poco caro, pero por el poder que se obtiene, que vale la pena.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top