Pruebas de C++ para principiantes: por dónde empezar y no volverse loco

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: ¿Por qué tu código C++ necesita protección?

\n\n

Imagina 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.

\n\n

¿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\n

Las 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
\n\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\n

Herramientas para pruebas de C++: elegir tu primer framework

\n\n

Para 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\n

Google Test (gtest)

\n

El estándar de la industria. Se utiliza en Google, YouTube y muchos proyectos de código abierto. Potente, pero requiere cierta configuración.

\n\n

Catch2

\n

Más ligero y «amigable» para principiantes. Se integra con un solo archivo de cabecera. Ideal para empezar.

\n\n

En 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\n

La 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.

\n\n

Ahora escribamos un programa simple en C++ y probémoslo.

\n\n

Ejemplo: función de suma

\n

Crea un archivo calculator.cpp:

\n\n
#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\n

Ahora compila y ejecuta:

\n\n
g++ -std=c++11 calculator.cpp -o calculator_test\n./calculator_test
\n\n

Verás algo como:

\n\n
All 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.
  • \n
  • REQUIRE — verifica una condición. Si es falsa, la prueba falla.
  • \n
  • "[math]" — una etiqueta para agrupar pruebas.
  • \n
\n\n

Consejos prácticos: cómo escribir buenas pruebas

\n\n

Simplemente escribir una prueba no es suficiente. Hay que escribir pruebas útiles. Aquí tienes algunas reglas que mejorarán tus pruebas unitarias.

Blogs

Book Recommendations