Marco de prueba de Google C++

Google C++ Testing Framework ( Google Test ) es una biblioteca para pruebas unitarias en C++ .  El código fuente está abierto desde mediados de 2008 [1] bajo la licencia BSD . La documentación está parcialmente traducida al ruso. [2] .

Google Test se basa en la metodología de prueba xUnit , es decir, cuando las partes individuales del programa (clases, funciones, módulos) se prueban por separado, de forma aislada. La biblioteca en sí se desarrolla con el uso activo de pruebas, al agregar cualquier parte a la versión oficial, además del código de los cambios en sí, es necesario escribir un conjunto de pruebas para confirmar su corrección.

Características principales

Plataformas soportadas

Google Test admite oficialmente Linux , Windows y Mac . Para estas plataformas, la biblioteca proporciona todos los scripts de compilación necesarios. Sin embargo, Google Test también funciona en AIX , HP-UX , Solaris , Tru64 , zSeries y muchos otros sistemas. Para las plataformas oficialmente no admitidas, el desarrollador debe compilar Google Test por sí mismo.

Un ejemplo de prueba de una función libre

Por ejemplo, hay una función que devuelve un número entero:

factorial int ( int n ); // Devuelve el factorial n

La prueba para esta función podría ser así:

// Comprobar el factorial de 0. PRUEBA ( FactorialTest , HandlesZeroInput ) { EXPECT_EQ ( 1 , Factorial ( 0 )); } // Comprobar el factorial de algunos valores positivos. PRUEBA ( PruebaFactorial , ManejaEntradaPositiva ) { EXPECT_EQ ( 1 , Factorial ( 1 )); EXPECT_EQ ( 2 , Factorial ( 2 )); EXPECT_EQ ( 6 , Factorial ( 3 )); EXPECT_EQ ( 40320 , Factorial ( 8 )); }

Ejemplo de prueba de clase

Una prueba para una cola FIFO llamada Queue con la siguiente interfaz:

template < typename E > // E - tipo de elemento. cola de clase { público : cola (); void Encolar ( const E & elemento ); E * Quitar de la cola (); // Devuelve NULL si la cola está vacía. tamaño_t tamaño () const ; ... };

Primero, se define una clase de prueba (dispositivo de prueba ) : 

class QueueTest : public :: testing :: Test { protegido : Configuración de vacío virtual () { q0_ . Poner en cola ( 1 ); q1_ . Poner en cola ( 2 ); q2_ . Poner en cola ( 3 ); } Cola < int > q0_ ; Cola < int > q1_ ; Cola < int > q2_ ; };

Ahora la prueba en sí (la macro TEST_F() se usa en lugar de TEST(), ya que la función de prueba debe tener acceso a los campos y métodos de la clase):

// Comprobar la inicialización de la cola. PRUEBA_F ( PruebaCola , InicialmenteEstáVacío ) { ESPERAR_EQ ( 0 , q0_.tamaño ( ) ); } // Comprobar si el elemento se elimina de la cola. PRUEBA_F ( PruebaCola , TrabajosDeCola ) { int * n = q0_ . sacar de la cola (); ESPERAR_EQ ( NULO , n ); n = q1_ . sacar de la cola (); ASSERT_TRUE ( n != NULL ); ESPERAR_EQ ( 1 , * n ); ESPERAR_EQ ( 0 , q1_.tamaño ( ) ); borrar ; _ n = q2_ . sacar de la cola (); ASSERT_TRUE ( n != NULL ); ESPERAR_EQ ( 2 , * n ); ESPERAR_EQ ( 1 , q2_ .tamaño ( ) ); borrar ; _ }

Hay dos tipos principales de comprobaciones ( afirmaciones ) en Google Test: ASSERT_* y EXPECT_*. Si se usa EXPECT_*, la prueba continuará ejecutándose si falla, aunque la falla se registrará y la prueba fallará de todos modos. Si no tiene sentido continuar con la prueba, se utiliza ASSERT_*. Esta verificación finaliza la prueba si la verificación falla.

Funciones adicionales

La biblioteca Google Test está estrechamente relacionada con la biblioteca Google Mock , que le permite probar cómo interactúa su clase con los demás. Con esta biblioteca, puede asegurarse de que su clase llame a métodos de otros objetos [5] , y también verificar que estos métodos se llamen con los valores de parámetro correctos [6] , el número correcto de veces [7] , en el orden correcto [8] .

Notas

  1. Blog de prueba de Google: anuncio: nuevo marco de prueba de Google C++ . Consultado el 16 de julio de 2009. Archivado desde el original el 5 de abril de 2009.
  2. googletest-translations - Alojamiento de proyectos en Google Code . Consultado el 28 de abril de 2022. Archivado desde el original el 28 de abril de 2022.
  3. Dispositivos de prueba: Uso de la misma configuración de datos para varias pruebas - Google Test Primer (enlace descendente) . Consultado el 25 de abril de 2016. Archivado desde el original el 5 de abril de 2016. 
  4. Limitaciones conocidas - Google Test Primer (enlace no disponible) . Consultado el 25 de abril de 2016. Archivado desde el original el 5 de abril de 2016. 
  5. Sintaxis general: marco de simulación de Google C++ para tontos . Consultado el 25 de abril de 2016. Archivado desde el original el 8 de febrero de 2016.
  6. Matchers: ¿Qué argumentos esperamos? - Marco de simulación de Google C ++ para tontos . Consultado el 25 de abril de 2016. Archivado desde el original el 8 de febrero de 2016.
  7. Cardinalidades: ¿Cuántas veces se llamará? - Marco de simulación de Google C ++ para tontos . Consultado el 25 de abril de 2016. Archivado desde el original el 8 de febrero de 2016.
  8. Llamadas ordenadas frente a llamadas no ordenadas - Estructura de simulación de Google C++ para principiantes . Consultado el 25 de abril de 2016. Archivado desde el original el 8 de febrero de 2016.

Enlaces