¿Qué es Googletest?
- Es un marco de prueba, es decir, una herramienta de software para escribir y ejecutar pruebas unitarias.
- Es una biblioteca para escribir pruebas en C++.
- Se basa en la arquitectura xUnit que es un conjunto de “Frameworks” para la programación y ejecución automatizada de casos de prueba.
- Prueba de Google
Conceptos básicos :
-
- , ASSERT_LT, ASSERT_GT, ASSERT_GE.
- EXPECT_WQ, EXPECT_NE, EXPECT_LT, EXPECT_GT, EXPECT_GE.
Afirmación fatal | afirmación no fatal | verifica |
---|---|---|
ASSERT_TRUE (condición); | EXPECT_TRUE (condición); | la condición es verdadera |
ASSERT_FALSE (condición); | EXPECT_FALSE (condición); | la condición es falsa |
ASSERT_STREQ(str1, str2); | ESPERAR_STREQ(str1, str2); | las dos strings str1 y str2 tienen el mismo contenido |
ASSERT_STRNE(str1, str2); | ESPERAR_STRNE(str1, str2); | las dos strings str1 y str2 tienen contenido diferente |
ASSERT_STRCASEEQ(str1, str2); | ESPERAR_STRCASEEQ(str1, str2); | las dos strings str1 y str2 tienen el mismo contenido, ignorando el caso |
ASSERT_STRCASENE(str1, str2); | ESPERAR_STRSTRCASENE(str1, str2); | las dos strings str1 y str2 tienen contenido diferente, ignorando el caso |
Pruebas simples :
PRUEBA() :
- Una macro para definir y nombrar una función de prueba.
- Use las diversas afirmaciones de Googletest para verificar los valores.
- Si alguna aserción en la prueba falla (ya sea fatalmente o no), o si la prueba falla, toda la prueba falla. De lo contrario, tiene éxito.
TEST(TestSuiteName, TestName) { ... test body ... }
Accesorios de prueba :
- Uso de la misma configuración de datos para múltiples pruebas.
- Derivar una clase de ::testing::Test. Comience su cuerpo con protected:, ya que querremos acceder a los miembros del dispositivo de las subclases.
- Si es necesario, escriba un constructor predeterminado o SetUp().
- Si es necesario, escriba un destructor predeterminado o TearDown().
- Utilice TEST_F(), en lugar de TEST().
TEST_F(TestFixtureName, TestName) { ... test body ... }
Invocación de las pruebas :
- EJECUTAR_TODAS_PRUEBAS();
- Devuelve 0: Todas las pruebas son exitosas.
- Devuelve 1: de lo contrario.
Ejemplos :
Una función factorial:
int factorial(int n) { // If n < 1; return -1; // Else factorial = n!; return factorial; }
TEST(FactorialTest, FactorialOfZeroShouldBeOne) { ASSERT_EQ(1, factorial(0)); }
TEST(FactorialTest, FactorialOfPositiveNos) { ASSERT_EQ(1, factorial(1)); ASSERT_EQ(24, factorial(4)); ASSERT_EQ(120, factorial(5)); }
int main(int argc, char **argv) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }
Argumentos de línea de comando :
- Volcar la salida en formato XML pasando:
–gtest_output=”xml:informe.xml”
- Si desea ejecutar varias veces:
–gtest_repeat=2
- Depurador invocado en caso de error:
–gtest_break_on_failure
- No es necesario ejecutar todas las pruebas todas las veces:
–gtest_filter=<string de prueba>