Introducción: ¿Por qué tu código C++ necesita protección?
\n\nImagina que has escrito un programa en C++. Se compila sin errores, se ejecuta e incluso da algún resultado. Exhalas con alegría y envías el código a producción. Pero al día siguiente un colega te escribe: «Oye, tu función calculateSum falla si le pasas un número negativo». Y empiezas a buscar el error frenéticamente, releyendo cientos de líneas de código.
¿Te suena la situación? Si es así, has llegado al lugar indicado. Las pruebas de C++ no son una burocracia aburrida, sino tu escudo personal contra este tipo de incidentes. En este artículo, analizaremos por dónde empezar con las pruebas de C++ para principiantes, sin adentrarnos en teoría compleja. Aprenderás qué herramientas usar, cómo escribir tus primeras pruebas y por qué esto te ahorrará horas de nervios.
\n\n¿Qué son las pruebas unitarias y para qué sirven?
\n\nLas pruebas unitarias (o pruebas de módulo) consisten en verificar los «bloques» individuales de tu código: funciones, clases, métodos. Escribes un pequeño programa que llama a tu función con datos específicos y comprueba que el resultado coincide con el esperado.
\n\n¿Para qué sirve esto a un principiante?
\n- \n
- Tranquilidad: sabes con certeza que tu código funciona. \n
- Velocidad: no temes hacer cambios, porque las pruebas te dirán inmediatamente si algo se ha roto. \n
- Documentación: las pruebas son un ejemplo vivo de cómo usar tu código. \n
Sin pruebas, un proyecto de C++ es como una casa construida sin cimientos. Parece que está en pie, pero el primer terremoto (léase: cambio de requisitos) la derrumbará.
\n\nHerramientas para pruebas de C++: elegir tu primer framework
\n\nPara las pruebas unitarias de C++ existen varios frameworks populares. Para un principiante, recomiendo dos: Google Test (gtest) y Catch2. Ambos son gratuitos, tienen excelente documentación y son fáciles de integrar.
\n\nGoogle Test (gtest)
\nEl estándar de la industria. Se utiliza en Google, YouTube y muchos proyectos de código abierto. Potente, pero requiere cierta configuración.
\n\nCatch2
\nMás ligero y «amigable» para principiantes. Se integra con un solo archivo de cabecera. Ideal para empezar.
\n\nEn este artículo usaremos Catch2 — es minimalista y te permitirá centrarte en lo esencial, no en la configuración.
\n\n¿Cómo instalar Catch2 y escribir tu primera prueba?
\n\nLa instalación de Catch2 es sencilla. Descarga el único archivo de cabecera catch.hpp del repositorio oficial y colócalo en la carpeta de tu proyecto. No necesitas cmake, make ni enlazado.
Ahora escribamos un programa simple en C++ y probémoslo.
\n\nEjemplo: función de suma
\nCrea un archivo calculator.cpp:
#include <iostream>\n#include "catch.hpp"\n\n// Función que vamos a probar\nint add(int a, int b) {\n return a + b;\n}\n\n// Prueba\nTEST_CASE("La suma funciona correctamente", "[math]") {\n REQUIRE(add(2, 3) == 5);\n REQUIRE(add(-1, 1) == 0);\n REQUIRE(add(0, 0) == 0);\n REQUIRE(add(100, 200) == 300);\n}\n\nAhora compila y ejecuta:
\n\ng++ -std=c++11 calculator.cpp -o calculator_test\n./calculator_test\n\nVerás algo como:
\n\nAll tests passed (4 assertions in 1 test case)\n\n¡Felicidades! Has escrito tu primera prueba unitaria en C++. Analicemos lo que ha ocurrido:
\n- \n
TEST_CASE— es una macro que crea un escenario de prueba. \nREQUIRE— verifica una condición. Si es falsa, la prueba falla. \n"[math]"— una etiqueta para agrupar pruebas. \n
Consejos prácticos: cómo escribir buenas pruebas
\n\nSimplemente escribir una prueba no es suficiente. Hay que escribir pruebas útiles. Aquí tienes algunas reglas que mejorarán tus pruebas unitarias.