Saltar al contenido

¿Cuál es la diferencia entre gtest y gmock?

Solución:

“Google Mock no es un marco de prueba en sí mismo. En su lugar, necesita un marco de prueba para escribir pruebas. Google Mock funciona a la perfección con Google Test. Viene con una copia de Google Test incluida. A partir de la versión 1.1.0, también puede usar con cualquier marco de prueba de C ++ de su elección “. – Google Mock, Requisitos del sistema

Los simulacros son como objetos, definidos de tal manera que imitan el trato real al proporcionar un comportamiento controlado. Por ejemplo, para probar una aplicación de tick bursátil, crearía un proveedor de datos bursátil falso que creara cotizaciones bursátiles falsas para probar su código. Piense en la palabra burla, que literalmente significa ‘imitar’.

Las unidades de software no viven en prados verdes. Muy a menudo necesitan contrapartes para hacer el trabajo. En el sistema real, estas contrapartes pertenecen al sistema mismo. En las pruebas unitarias se sustituyen por simulaciones.

Gtest es un marco para pruebas unitarias. Gmock es un marco que imita al resto de su sistema durante las pruebas unitarias.

Suponga que está escribiendo un fragmento de código que necesita interactuar con un sistema externo costoso e impredecible (por ejemplo, un sitio web, una base de datos grande, un sensor físico, etc.) Su código debe seguir funcionando cuando el sistema externo se agota , o le da mensajes de error, o le da datos inconsistentes. ¿Cómo puede probar si su código realmente cumple con esos requisitos?

Bueno, podría ejecutarlo contra un sitio web / base de datos / sensor / lo que sea, un montón de veces, y espero que tenga suerte en todas las condiciones de error que se supone que debe manejar su código. Obviamente, una estrategia de prueba bastante cara y poco fiable.

Entonces, en su lugar, escribe algo que satisfaga la misma interfaz que el sitio web / base de datos / sensor / lo que sea, pero que haya programado para producir ciertas respuestas “enlatadas” (errores, tiempos de espera, datos inconsistentes, etc.). Sus pruebas ahora corren mucho más rápido (porque no enfrentan la sobrecarga de un verdadero Sitio web / base de datos / sensor / lo que sea), y son predecibles. Desafortunadamente, se necesita mucha codificación para escribir un sitio web / base de datos / sensor / lo que sea “simulado” separado para cada escenario que necesite probar. Cuanto más trabajo sea, menos probable será que lo hagas. Resultado: código probado de forma inadecuada.

Gmock y sus parientes automatizan muchas de estas cosas, por lo que puede especificar el comportamiento “enlatado” deseado en el medio de la prueba, a costa de sólo unas pocas líneas de código. Si las pruebas son fáciles de escribir, es probable que escriba más y, por lo tanto, es más probable que descubra errores antes de enviar el código 🙂

Por cierto, esto implica que también necesita una “inyección de dependencia”: su código debe incluir un parámetro del tipo de interfaz, y debe poder pasar un objeto simulado (para pruebas unitarias) o el “real” Sitio web / base de datos / sensor / lo que sea (para uso en el mundo real).

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *