Introducción a CppUTest
Correo electrónico
·
14 may 2017

Puntos clave
CppUTest es un marco de pruebas ligero, mantenido activamente, estilo xUnit para C/C++, con una capa de integración C que funciona sin problemas incluso en bases de código pesadas en C.
Puede instalarlo a través de gestores de paquetes (distribuciones de Linux, Homebrew) o clonar el repositorio de GitHub.
Una configuración mínima consiste en:
un directorio de producción
src/,un directorio de pruebas
t/,un runner de pruebas (
CommandLineTestRunner), ymódulos de prueba utilizando bloques
TEST_GROUPyTEST().
CppUTest proporciona un ayudante MakefileWorker.mk que simplifica la construcción de pruebas, el enlace de bibliotecas y el manejo de flags.
La detección de fugas de memoria está habilitada de forma predeterminada a través de sobrescrituras de malloc/free, capturando fugas dentro del código fuente probado.
La cobertura de código a través de gcov se integra fácilmente habilitando
CPPUTEST_USE_GCOV=Y, produciendo informes de cobertura completa y resúmenes en HTML.El marco incluye características avanzadas: mocks, plugins, scripts de ayuda e interoperabilidad directa con C, útiles para complejas bases de código empresariales.
Destacados de Q&A
¿Qué es CppUTest y por qué usarlo?
Es un marco de pruebas robusto, de estilo xUnit, para C/C++ con una API limpia, macros de aserción integradas, detección de fugas y desarrollo activo, ideal para sistemas heredados o modernos.
¿Cómo estructuras un proyecto básico usando CppUTest?
¿Cómo se ejecutan todas las pruebas?
El test runner utiliza:
¿Cómo se construyen pruebas sin configurar manualmente las opciones del compilador?
Utiliza
MakefileWorker.mkde CppUTest, que maneja las banderas, el enlace y la ejecución de pruebas automáticamente.¿Puede CppUTest detectar fugas de memoria automáticamente?
Sí. Sobrescribe malloc/free durante las compilaciones de prueba, informando:
qué prueba tuvo fugas,
dónde ocurrió,
tamaño de la fuga y contenido de la memoria.
Ejemplo de salida de fallo:
¿Cómo genero la cobertura de código?
Habilitar:
CPPUTEST_USE_GCOV=YAsegúrese de que
filterGcov.shesté disponible en$(CPPUTEST_HOME)/scripts/.Ejecutar: make
gcovEsto produce
.gcov, texto resumen, y reportes de cobertura en HTML.
¿Qué más puede hacer CppUTest más allá de las pruebas básicas?
marco de pruebas simuladas
sistema de complementos
scripts de automatización de ayuda
integración nativa de C
macros de aserción extensas
¿Para quién es más adecuado CppUTest?
Equipos que trabajan con sistemas empotrados, plataformas C, servicios de C++, o cualquier entorno donde la fiabilidad y la seguridad de memoria deben ser validadas continuamente.
En SparkPost, dedicamos mucho tiempo y esfuerzo a probar nuestro código. Nuestra plataforma está escrita en C, y recientemente investigué la integración con un marco de pruebas unitarias llamado “CppUTest”, que proporciona pruebas al estilo xUnit para C/C++. Este marco es sólido, rico en funciones y está en desarrollo activo, lo que lo convierte en una excelente opción. También proporciona una capa de integración en C que facilitó su uso con nuestro código en C de la plataforma, aunque la mayor parte del marco es C++. Este tutorial cubre cómo comenzar con CppUTest en tus propios proyectos.
¿Interesado en más?
Esto es solo la punta del iceberg cuando se trata de todas las características contenidas en esta herramienta. Además de lo básico discutido aquí, también tiene un marco de burla, una capa de integración directa con C y un marco de plugins, por nombrar algunos de los más importantes. El repositorio también contiene todo un directorio de scripts auxiliares que pueden ayudar a automatizar algunas de las partes rutinarias de trabajar con el marco.
¡Espero que la información aquí te ayude a mejorar la calidad de tu código C/C++ con esta gran herramienta!
Descargando CppUTest
La página del proyecto CppUTest está disponible en el sitio web oficial, y el repositorio está en github. También está incluido en los repositorios de gestión de paquetes para muchas distribuciones de Linux, así como en homebrew en Mac OS. Los ejemplos que siguen fueron ejecutados en Mac OS X, pero se derivan de código escrito para Red Hat, el sistema operativo en el que nuestra plataforma se ejecuta.
Los conceptos básicos están bien documentados en la página de inicio de CppUTest. Vamos a pasar por eso rápidamente y llegar a algunas de las características más interesantes.



