test google c++ unit-testing tdd googletest cppunit

c++ - GoogleTest vs CppUnit: los hechos



google test install (3)

Esos son los beneficios que veo. Hay un par de corredores de prueba GUI:

  1. https://github.com/ospector/gtest-gbar
  2. https://github.com/SandyChapman/gtest-runner-qt

He usado el primero y funciona bastante bien, aunque está en desarrollo y necesita algo de trabajo. No sé si hay otras opciones.

En el proceso de establecer nuestro marco de prueba de unidades C ++ para los próximos años, seleccionamos GoogleTest y CppUnit . Tengo algo de experiencia con ambos y mi gran preferencia es GoogleTest. De todos modos para convencer a mi jefe, necesito algunos datos, así que leí un poco en Internet, incluidos los manuales, las páginas wiki y algunas de las fuentes. Se me ocurrió una lista de ventajas de GoogleTest y una única ventaja de CppUnit (corredores de pruebas gráficas). Aquí están ordenados por la utilidad percibida :

  • INSTANTIATE_TEST_CASE_P para instanciar un caso de prueba con cualquier conjunto de parámetros que desee, incluidos los productos cartesianos
  • FRIEND_TEST para probar miembros privados de la clase (para todo el código heredado)
  • convirtiendo asevera en puntos de quiebre
  • afirmaciones no fatales
  • integración de googlemock "fuera de la caja"
  • detección automática de pruebas, sin necesidad de enumerarlas
  • las pruebas pueden ser deshabilitadas y habilitadas
  • las pruebas para ejecutar se pueden seleccionar usando patrones de nombre
  • pruebas de valor / tipo parametrizado
  • Afirmaciones de predicados definidas por el usuario
  • pruebas de muerte
  • mucho más rico conjunto de afirmaciones
  • escriba asevera
  • afirmando en subrutinas
  • información adicional de depuración se puede agregar a las afirmaciones utilizando <<
  • RecordProperty emite el último valor de propiedad a la salida XML
  • SCOPED_TRACE ayuda a comprender el contexto de una falla de aserción que proviene de una subruta o bucle.
  • xUnit XML output, puede ser mostrado por Jenkins de inmediato sin una transformación XSLT en el medio
  • admite impresoras de tipos personalizados
  • tiempo consumido por la indicación de prueba (sospecho que esto también es posible con CppUnit, pero aún no lo he descubierto)
  • API de detector de eventos de prueba (plug-ins definidos por el usuario)
  • prueba aleatoria
  • sin excepciones y RTTI

¿Estoy en lo correcto al asumir que CppUnit no admite todo lo anterior? ¿Existe alguna característica útil de GoogleTest no disponible en CppUnit? Me falta?

Y por último pero no menos importante: ¿hay alguna característica agradable de CppUnit que carece de GoogleTest?

¡Gracias!


Si no ha analizado xUnit++ , lo hice específicamente porque no estaba satisfecho con lo que estaba disponible (incluido gtest). La mayoría de su lista es compatible, y si no es así, si es una característica "imprescindible", probablemente estaría dispuesto a agregarla.


Si utiliza una versión anterior del compilador gcc o si su código bajo prueba se ejecuta en vxWorks (o VxSim), es posible que tenga una mejor oportunidad con cppUnit que Googletest framework.

Por otro lado, otra característica del marco de googletest es la disponibilidad de 3 niveles diferentes de configuración / desmontaje:

  • por programa
  • por caso de prueba (o grupo de prueba)
  • por instancias de prueba individuales

No estoy seguro si esto es compatible con cppUnit, pero esto podría ser muy útil, especialmente con sistemas heredados.

Además, hay un plugin de googletest para Eclipse CDT.