Estoy buscando comenzar con los objetos en mis pruebas unitarias. Parece que hay toneladas de buenos marcos de burla por ahí.
- ¿Los diferentes marcos tienen diferentes audiencias objetivo?
- ¿Qué factores debo considerar al elegir qué marco es el adecuado para mi situación?
Respuestas:
¿Los diferentes marcos tienen diferentes audiencias objetivo?
Si. Algunos marcos como Microsoft Moles , TypeMock Isolator y JustMock , le permiten poder burlarse de casi cualquier cosa. Estas herramientas de burla son generalmente mejores para los desarrolladores que desean usarlas en el código heredado existente, ya que es posible que no sea posible refactorizarlas en un diseño que sea más comprobable. *
Tradicionalmente, los diseños comprobables significan que la base de código necesita hacer un uso liberal de las interfaces, clases abstractas, métodos virtuales, clases no selladas , etc. Por lo tanto, los marcos de simulación tradicionales como Moq y RhinoMocks funcionan bien con el código desarrollado usando Test Driven Development, Dependency Injection y otros conceptos similares Por cierto, recomiendo encarecidamente usar la inyección de dependencia, ya que obtienes mucho más que un código comprobable, pero también un código más mantenible.
¿Qué factores debo considerar al elegir qué marco es el adecuado para mi situación?
* Consulte Trabajar eficazmente con código heredado para obtener información sobre cómo refactorizar lentamente el código sin pruebas en el código que se puede usar con herramientas de prueba tradicionales (y simulacros).
fuente
El tutorial de Moq tiene una sección sobre antecedentes, filosofía y controversia al principio que discute esto en relación con algunas herramientas específicas: TypeMock Isolator, RhinoMocks y Moq. Está escrito para explicar Moq, por lo que, naturalmente, está un poco sesgado, pero me pareció bastante útil cuando traté de comprender algunas de las diferencias en los marcos de burla.
Las respuestas a este hilo SO en C # Mocking Frameworks también me parecieron útiles. La mayoría solo se refiere a un Marco de Mocking que el usuario realmente encuentra útil, pero hay una respuesta de HaraldV que explica las simulaciones basadas en proxy y las simulaciones basadas en el generador de perfiles.
También pude encontrar una tabla de comparación en línea. Tenga en cuenta que es de 2009, por lo que no estoy seguro de que esté actualizado; hay al menos un comentario que indica que la información sobre TypeMock y las devoluciones de llamada están desactualizadas, pero el gráfico podría ser bueno para plantear problemas a considerar, incluso si necesita hacer un trabajo preliminar para ver cuál es el estado actual: RhinoMocks, Moq, NMock, y tabla de comparación TypeMock
Hay un proyecto en Google Code con casos de prueba en múltiples marcos de simulación para una fácil comparación de código: mocking-frameworks-compare
fuente
En mi equipo, elegimos Microsoft Moles . Gana significativamente en # 2, # 3 y # 4, aunque es menos idiomático que la mayoría de las alternativas y está en el extremo inferior en el # 1.
fuente