Pregunta

Muchas personas utilizan Objetos ficticios hora de escribir las pruebas unitarias.¿Qué es un El Objeto Mock?¿Por qué necesito uno?Necesito un Objeto Mock Marco?

¿Fue útil?

Solución

Objeto de Burla se utiliza para mantener las dependencias de su unidad de prueba.A veces usted tendrá una prueba como "SelectPerson" que se encargará de seleccionar a una persona de la base de datos y devolver un objeto de la Persona.

Para ello, normalmente se necesita una dependencia en la base de datos, sin embargo con objeto de burla puede simular la interacción con la base de datos con un simulacro de marco, por lo que puede devolver un conjunto de datos que se parece a uno regresó de la base de datos y, a continuación, puede probar el código de garantizar que se encarga de traducir un conjunto de datos a un objeto de la persona, en vez de usarlo para probar que una conexión a la base de datos existe.

Otros consejos

Varias personas ya han respondido el 'qué', pero aquí hay un par de rápidos 'porqués' que se me ocurre:

  1. Rendimiento

    Debido a que la unidad de pruebas debe ser rápido, las pruebas de un componente que interactúa con una red, una base de datos, o de otros que requieren mucho tiempo el recurso no tendrá que pagar la multa si se hace uso de mock objetos.Los ahorros suman rápidamente.

  2. Colaboración

    Si usted está escribiendo un bien encapsulado pieza de código que necesita para interactuar con el código de otra persona (que no ha se ha escrito todavía, o se está desarrollando en paralelo un común escenario), usted puede ejercer su código con simulacros de objetos una vez que un la interfaz ha sido acordado.De lo contrario, el código no puede comenzar a ser probado hasta el otro componente es terminado.

Un simulacro de objeto permite probar en contra de lo que está escrito, y el resumen de los detalles tales como el acceso a un recurso (disco, un servicio de red, etc).El simulacro, entonces deja pasar por que los recursos externos, o de la clase o lo que sea.

Usted realmente no necesita un objeto mock marco, sólo extender la clase de la funcionalidad que usted no quiere preocuparse en su prueba y asegúrese de que la clase está probando puede utilizar su maqueta en lugar de la cosa real (pasarlo a través de un constructor o de incubadora o algo.

La práctica va a mostrar cuando se burla son útiles y cuando ellos no están.

EDITAR:Burlándose de los recursos es especialmente importante para que usted no tenga que depender de ellos para existir durante la prueba, y usted puede burlarse de los detalles de cómo existe y lo que ellos responden (tales como la simulación de una FileNotFoundException, o un webservice que falta, o varios posibles valores de retorno de un webservice)...todos, sin la lentitud de los tiempos de acceso involucrados (burlándose será MUCHO más rápido que el acceso a tales recursos en la prueba).

Necesito un Objeto Mock Marco?

Ciertamente que no.A veces, se burla de la escritura a mano puede ser bastante tedioso.Pero para cosas simples, no es malo en absoluto.Aplicando el principio de Último Momento Responsable para burlarse de marcos, sólo debe cambiar de escrito a mano que se burla de un marco cuando has demostrado a ti mismo que escribir, se burla es más problemas de lo que vale.

Si usted está comenzando con burla, saltando directamente en un marco que va a al menos el doble de su curva de aprendizaje (se puede doblar una curva?).Burlándose de marcos va a hacer mucho más sentido cuando has pasado un par de proyectos que se burla de la escritura a mano.

Objeto de Burla es una forma de crear un "virtual" o se burlan de objeto a partir de una interfaz, clase abstracta o una clase con métodos virtuales.Permite especie de envoltura uno de estos en su propia definición para propósitos de prueba.Es útil para la fabricación de un objeto que es invocado por un determinado bloque de código en su prueba.

Un popular uno que me gusta usar es llamado Moq, pero hay muchos otros como RhinoMock y numerosas, que yo no sé acerca de.

Esto le permite probar cómo una parte de su proyecto interactúa con el resto, sin la construcción de la totalidad de la cosa y es posible que se pierda una parte vital.

EDITAR:Gran ejemplo de la wikipedia:Esto te permite probar el código de antemano, como un diseñador de automóviles utiliza un maniquí de prueba de choque para probar el comportamiento de un vehículo durante un accidente.

Otro uso es el te dará la posibilidad de prueba en contra de otras partes del sistema que no están integradas todavía.Por ejemplo, si la clase depende de otra clase que es parte de una característica que alguien está trabajando, usted puede simplemente pedir un casi completo de la interfaz, el programa para la interfaz y sólo burlarse de los detalles como se espera de ellos para trabajar.A continuación, asegúrese de que su hipótesis acerca de la relación que eran correctos (ya sea mientras se está desarrollando, o una vez que la función es completa).

Si o no usted una burla marco es útil depende, en parte, en el lenguaje del código que estamos escribiendo.Con un lenguaje estático, se necesita poner un esfuerzo extra en el fin de engañar al compilador a aceptar su burlarse de los objetos como un reemplazo para la cosa real.En un dinámicamente tipado lenguaje como Python, Ruby o Javascript, por lo general, puede simplemente conecte los métodos en objetos arbitrarios o clase y se pasa como parámetro -- por lo que un marco añadiría mucho menos valor.

2 se recomienda a burlarse de marcos .red de pruebas de Unidad son Typemock Aislador y el Rinoceronte de Simulacros.

En el siguiente link puedes ver una explicación de Typemock de por qué usted necesita un burlándose de marco para la Prueba de Unidad.

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