Utilizando Google Test 1.6 (Windows 7, Visual Studio C ++). ¿Cómo puedo desactivar una prueba determinada? (también conocido como ¿cómo puedo evitar que se ejecute una prueba?). ¿Hay algo que pueda hacer además de comentar toda la prueba?
googletest
Usuario
fuente
fuente
También puede ejecutar un subconjunto de pruebas , de acuerdo con la documentación:
Ejecución de un subconjunto de pruebas
No es la solución más bonita, pero funciona.
fuente
Ahora puede usar la
GTEST_SKIP()
macro para omitir condicionalmente una prueba en tiempo de ejecución. Por ejemplo:Tenga en cuenta que esta es una característica muy reciente, por lo que es posible que deba actualizar su biblioteca de GoogleTest para usarla.
fuente
GTEST_SKIP()
está disponible desde 1.10.0.GTEST_SKIP_("some message")
(tenga en cuenta el guión bajo al final)Aquí está la expresión para incluir pruebas cuyos nombres tienen las cadenas foo1 o foo2 y excluir las pruebas cuyos nombres tienen las cadenas bar1 o bar2 en ellas:
fuente
Prefiero hacerlo en código:
Puedo comentar ambas líneas para ejecutar todas las pruebas, descomentar la primera línea para probar una sola característica que estoy investigando / trabajando, o descomentar la segunda línea si una prueba está rota pero quiero probar todo lo demás.
También puede probar / excluir un conjunto de funciones utilizando comodines y escribiendo una lista, "MyLibrary.TestNetwork *" o "-MyLibrary.TestFileSystem *".
fuente
export GTEST_FILTER='*'
.*
" no "". En su lugar, usaré otra variable de entorno que anule el filtro.Si se necesita más de una prueba, omita
fuente
Para otro enfoque, puede envolver sus pruebas en una función y usar verificaciones condicionales normales en tiempo de ejecución para ejecutarlas solo si lo desea.
Esto es útil para mí, ya que intento ejecutar algunas pruebas solo cuando un sistema admite IPv6 de doble pila.
Técnicamente, ese material de pila dual no debería ser una prueba unitaria, ya que depende del sistema. Pero realmente no puedo hacer ninguna prueba de integración hasta que haya probado que funcionan de todos modos y esto garantiza que no informará fallas cuando no sea la falla de los códigos.
En cuanto a la prueba, tengo objetos stub que simulan el soporte de un sistema para dualstack (o la falta de) mediante la construcción de sockets falsos.
El único inconveniente es que la salida de la prueba y la cantidad de pruebas cambiarán, lo que podría causar problemas con algo que monitorea la cantidad de pruebas exitosas.
También puede utilizar ASSERT_ * en lugar de EQUAL_ *. Afirmará sobre el resto de la prueba si falla. Evita que se descarguen muchas cosas redundantes en la consola.
fuente
Tenía la misma necesidad de pruebas condicionales y descubrí una buena solución. Definí una macro TEST_C que funciona como una macro TEST_F, pero tiene un tercer parámetro, que es una expresión booleana, evaluado en tiempo de ejecución en main.cpp ANTES de que se inicien las pruebas. Las pruebas que evalúan falso no se ejecutan. La macro es fea, pero se ve así:
Además, en su main.cpp, necesita este ciclo para excluir las pruebas que evalúan falso:
fuente