Pregunta Cómo ejecutar casos de prueba específicos en GoogleTest


Estoy intentando escribir una función / método para mi proyecto, que le preguntará al usuario qué casos de prueba va a ejecutar. Se ve abajo ...,

Test_Cases_1
         |_TestNo1
         |_TestNo2....so on
Test_Cases_2
         |_TestNo1
         |_TestNo2....so on
....
....so on
Test_Cases_N
         |_TestNo1
         |_TestNo2....so on

Entonces, ahora el desafío es cuando se ejecuta el proyecto, ¿debería indicarme qué casos de prueba le gustaría ejecutar? Si selecciono Test_Cases_1 y Test_Cases_N. Luego debería ejecutar estos dos casos de prueba y excluir a todos los demás Test_Cases_2 to ..... En la ventana de resultados también me gustaría ver los resultados de Test_Cases_1 y Test_Cases_N.

Entonces, si voy a ver GoogleTest, hay un método llamado test_case_to_run_count(); Pero todo el test cases se están registrando con el método Test_F (). Entonces, hice muchos análisis, pero todavía no encontré ninguna solución. Por favor, ayúdame.


75
2017-08-22 15:04


origen


Respuestas:


Podrías usar opciones avanzadas para ejecutar las pruebas de Google.

Para ejecutar solo algunas pruebas de unidad, puede usar --gtest_filter=Test_Cases1* opción de línea de comando con valor que es expresión regular. Creo que resolverá tu problema.

UPD:

Bueno, la pregunta era cómo correr casos de prueba específicos. La integración de gtest con su GUI es otra cosa, que realmente no puedo comentar, porque no proporcionó detalles de su enfoque. Sin embargo, creo que el siguiente enfoque podría ser un buen comienzo:

  1. Obtenga todas las cajas de prueba ejecutando pruebas con --gtest_list_tests
  2. Analiza estos datos en tu GUI
  3. Seleccione casos de prueba que desee ejecutar ro
  4. Ejecute el ejecutable de prueba con la opción --gtest_filter

120
2017-08-22 15:10



Resumiendo @Rasmi Ranjan Nayak y @nogard responde y agrega otra opción:

En la consola

Deberías usar la bandera --gtest_filter, me gusta

--gtest_filter=Test_Cases1*

(También puede hacer esto en Propiedades | Propiedades de configuración | Depuración | Argumentos de comando)

En el medio ambiente

Debes establecer la variable GTEST_FILTER me gusta

export GTEST_FILTER = "Test_Cases1*"

En el código

Debes establecer una bandera filter, me gusta

::testing::GTEST_FLAG(filter) = "Test_Cases1*";

de tal manera que su función principal se convierte en algo así como

int main(int argc, char **argv) {
    ::testing::InitGoogleTest(&argc, argv);
    ::testing::GTEST_FLAG(filter) = "Test_Cases1*";
    return RUN_ALL_TESTS();
}

Mira la sección Ejecutando un subconjunto de las pruebas para obtener más información sobre la sintaxis de la cadena que puede usar.


47
2017-08-23 12:27



Finalmente recibí alguna respuesta, ::test::GTEST_FLAG(list_tests) = true; // Desde su programa, no desde la consola w.r.t

Si quieres usar --gtest_filter =*;  /* =*, =xyz*... etc*/ // Debe usarlos en la consola.

Por lo tanto, mi requisito es utilizarlos desde el programa, no desde la consola.

Updated:-

Finalmente recibí la respuesta para actualizar el mismo desde el programa.

 ::testing::GTEST_FLAG(filter) = "*Counter*:*IsPrime*:*ListenersTest.DoesNotLeak*";//":-:*Counter*";
      InitGoogleTest(&argc, argv);
RUN_ALL_TEST();

Entonces, gracias por todas las respuestas.

Ustedes son geniales.


22