Recientemente ha habido bastante expectación en torno a los diferentes marcos ficticios en el .NETO mundo. Yo todavía no he comprendido lo que es tan grande sobre ellos. No parece ser difícil escribir la burla de los objetos que me necesita a mí mismo. Especialmente con la ayuda de Visual Studio rápidamente me puede escribir una clase que implementa la interfaz quiero simulacro (se auto-genera casi todo para mí) y, a continuación, escribir una implementación para el método(s) que necesito para mi examen. Hecho! Por qué ir por la molestia de la comprensión de un marco de trabajo ficticios con el único propósito de salvar a un par de líneas de código. O es una burla marco no sólo sobre el ahorro de líneas de código?

  • Solo una advertencia…esta pregunta es no .RED específica. Así que siéntase libre de leer si usted se encuentra aquí de alguna manera.
InformationsquelleAutor bitbonk | 2008-11-18

10 Comentarios

  1. 32

    Una vez que finalmente llegué a la caída de objetos ficticios, me di cuenta de que son esenciales para pruebas de unidad por la misma razón que a doble ciego, de prueba o de los grupos de control son esenciales para los ensayos científicos: aíslan a lo que en realidad estamos de pruebas.

    Si tienes que probar una clase que tiene un poco de interacción a través de otras interfaces, no sólo se ahorra las líneas de código que tiene que burlarse de todos y cada interfaz, pero también tener la capacidad de hacer cosas como «lanzar una excepción si un inesperado se llama al método» o «excepción» si se llama a estos métodos fuera de orden». Usted puede obtener sorprendentemente sofisticado, con simulacros de marcos, y a pesar de que me voy rápidamente a admitir que existe una gran curva de aprendizaje, cuando usted se levanta a la velocidad que van a ayudar a hacer de su unidad de pruebas más exhaustivas sin estar hinchado.

    • ¿Cómo pueden los métodos de ser llamado fuera de orden? La OMI es un código de olor.
    • Depende del flujo de trabajo de la clase en simulacros. Si algo ha estado mantiene a través de un conocido de ciclo de vida (por ejemplo, init (), () ejecutar, el desmontaje ()), entonces la clase bajo prueba debe respeto a ese estado.
    • No es que llegar hacia atrás un poco? Hacer una llamada responsable para garantizar el adecuado estado de alguien? No la clase que requiere una adecuada llame a fin de ser el uno para asegurar que se llama/se usa correctamente? Por el lanzamiento de excepciones/afirmaciones cuando no lo es? Y no el de las pruebas de esta «orden-que requieren de clase», compruebe que se produce cuando se llama a los métodos en una inadecuada orden? A mí me parece que esta sería una forma más efectiva de hacerlo de la reorganización de la responsabilidad para el uso correcto a todos los posibles usuarios de que «el fin de-que requieren de clase».
  2. 12

    Realmente identificado a uno de los puntos clave de un simulacro de marco en su pregunta. El hecho de que el código de la burla de sí mismo no es algo que el desarrollador debe estar preocupado. La burla de los marcos de darle las implementaciones de las interfaces a través de programación, además de que son funcionales (basado en la configuración de la maqueta).

    ¿Qué hacer si usted está probando un ICustomerDAO, por ejemplo, y quieres probar algún método 14 veces cada uno con diferentes resultados? Implementar 14 clases diferentes de forma manual? Dudo que alguien quiera hacerlo.

    Se burla de darle el poder de definir lo que va a pasar con las partes de sus clases cuando usted no está preocupado con independencia o no de que realmente va a funcionar, como lanzar excepciones siempre que usted quiera, devuelve cero resultados y asegurarse de que usted maneja correctamente, etc…

    Son una gran herramienta de prueba de unidad.

  3. 8

    Anteriores preguntas que pueden ayudar:

    ¿Qué es un simulacro y cuando debo usarlo?

    Mockist vs clásica TDD

    Me parece que el uso de un marco de trabajo ficticios me permite generar pruebas mucho más rápido y con mejor comprobación de que lo que esperamos que suceda en la prueba de realidad es happengin. Tengo en el pasado implementado un comprobante de pago o falsificaciones de mí mismo. Me di cuenta de que necesitaba generar los stubs específica de la prueba que yo quería y este tomó un montón de tiempo. Puedo crear la misma prueba mucho más rápido utilizando un marco de trabajo ficticios. Los buenos de apoyo a la generación de falsificaciones, auxiliares o simulacros con sencillo sintaxis.

    Se toma un tiempo para conseguir la caída de ella, yo lo evite por un tiempo, pero ahora no se trata de trabajar sin un marco de trabajo ficticios, por las razones que @Chamelaeon estados.

    • +1 casi Se podría decir que una burla marco proporciona una conexión DSL – y los beneficios de DSL son bien conocidos.
  4. 4

    Roy Osherove había una encuesta acerca de los Simulacros de Marcos y abajo en la sección de comentarios, hay una discusión (aunque breve) acerca de si se necesita un Simulacro de Marco o no.

    Yo, personalmente, he sido manualmente haciendo exactamente como usted dijo y me ha funcionado bastante bien, pero esto ha sido principalmente por hábito más que una estrecha opinión sobre simulacros de marcos en general.

  5. 3

    Bueno, yo ciertamente no creo que se NECESITA un marco de trabajo ficticios. Es un marco de trabajo como cualquier otro, y es en última instancia, diseñado para ahorrar tiempo y esfuerzo. También puede hacer cosas como el rollo de su propia comunes de estructuras de datos como las pilas y las colas, pero no es en general más fácil usar los integrados en las bibliotecas de clases que se suministran con el compilador/IDE de su idioma de elección?

    Estoy seguro de que hay otras razones de peso para el uso de marcos ficticios, aunque me gustaría dejarlo para el TDD y pruebas unitarias de los gurús de responder.

  6. 2

    Por la misma razón que usted no trate de escribir pruebas unitarias sin NUnit. Un marco de trabajo ficticios le ayudará en la verificación de estado y comportamiento a lo largo de cientos de pruebas de unidad. Vale la pena las 2 semanas o de dolor para llegar a la velocidad y realmente ayuda a concentrarse en lo que necesita ser probado.

  7. 2

    Una cosa que me preocupa acerca de un marco de trabajo ficticios es que «lo que una función debe o/p dado un i/p» a través de

    cuando(mock.someMethod(«algunos arg»)).thenReturn(«algo»);

    declaración se propaga a través de muchos de la unidad de las clases de prueba.

    Permítame explicar con un ejemplo. Digamos que hubo una Interfaz DAO función getEmp(int EmpID), que era la de devolver un Objeto Employee cuando pasa un ID de Empleado como parámetro. Suponga que esta función fue objeto de burla por 10 unidades diferentes clases de prueba. Ahora, si en el futuro, esta función se han cambiado para volver a una versión más reciente del Empleado Objeto, uno tendría que ir a cada una de las 10 clases diferentes para actualizar este cambio.

    Las desventajas son como sigue…

    a) no sé cómo averiguar todas las clases que se burlan de esta función, así que puedo ir a la actualización de este cambio.

    b) los casos de prueba que consume el simulacro de objetos DAO siguen sin darse cuenta de los cambios que han sucedido a la Interfaz DAO porque el modelo no ha cambiado y, por tanto, continuar a ser verde.
    Idealmente, si yo hubiera codificado por un único burlarse de la clase de mí y se consume en todas partes, tendría un lugar a la actualización para la versión más reciente del Empleado objeto. También, una vez que actualizo en este lugar, todos los casos de prueba que consume el simulacro de rompería y entonces sabría exactamente qué lugares debo ir y hacer una actualización para el nuevo Empleado Objeto.

    Pensamientos en mis puntos de vista..

  8. 0

    Una de las cosas buenas acerca de un marco de trabajo ficticios es que permite la configuración de las expectativas en los objetos de los que se burlaban. Con las expectativas que puede establecer todo tipo de condiciones para ejercer el código que eso es ser probado.

  9. 0

    Un marco de aislamiento o burlándose de marco permite probar el código que se desea, sin sus dependencias. Se hace corto para la ejecución de pruebas, permite depurar rápidamente y fácilmente crear una red de seguridad de pruebas de todo el código. Marcos diferentes tienen diferentes características, y como se dijo antes – es una herramienta, y usted debe elegir la herramienta correcta para el trabajo.

  10. 0

    He de usar rhino mocks para un marco de trabajo ficticios. Yo y otros 5 los desarrolladores utilizan en una aplicación de gran empresa que fue un 8 mes del proyecto. Hemos utilizado tdd en el proyecto. ¿Valió la pena? Supongo. Hubo una gran gran punto de venta para el uso de burla que tengo que usar en cada proyecto? En mi opinión, no. No es algo que es necesario, es sólo una herramienta que usted puede utilizar si usted quiere probarlo. Algunos de los proyectos que usted puede rodar fuera de su propio simulacro de clases como dicen algunos aquí se prefiere – es más fácil. Otros proyectos son más grandes y pueden requerir un marco de trabajo ficticios. La palabra clave (en mi opinión) se PUEDE requerir… la cantidad de cobertura de código se requieren? Para mí, esa es otra consideración para el uso de burla. El proyecto que hice con tdd/rhino mocks estábamos obligados a tener un 80% de cobertura de código para la burla nos ayudó a conseguirlo. Si nuestro código requisitos de cobertura eran menos, por ejemplo, 40%, probablemente no se habría utilizado un marco de trabajo ficticios y acabo de escribir nuestros propios simulacros de clases como otros mencionan que hacer.

Dejar respuesta

Please enter your comment!
Please enter your name here