2011-10-27 20 views
57

En el proceso de creación de nuestra C++ marco de pruebas de unidad para los próximos años en la lista reducida 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 clasificadas por percibe utilidad:GoogleTest vs CPPUnit: Los hechos

  • INSTANTIATE_TEST_CASE_P crear una instancia de un caso de prueba con cualquier conjunto de parámetros que desea, incluyendo productos cartesianos
  • FRIEND_TEST para probar miembros de la clase privada (para todo el código heredado)
  • inflexión afirma en los puntos de interrupción
  • no fatales afirma
  • "fuera de la caja" integración googlemock
  • autómata ic pruebas de detección, no hay necesidad de enumerarlas
  • pruebas se pueden desactivar y permitieron
  • pruebas pueden ser seleccionadas utilizando patrones de nombre/ensayos de tipo parametrizada
  • valor
  • predicado definido por el usuario para ejecutar afirma
  • la muerte pone a prueba
  • mucho más rico conjunto de
  • afirma
  • tipo afirma
  • valer en subrutinas
  • información de depuración adicional se puede agregar a asevera usando < <
  • RecordProperty emite el último valor de la propiedad a la salida XML
  • SCOPED_TRACE ayuda a entender el contexto de un error de aserción que viene de dentro de una sub-rutina o bucle.
  • xUnit salida XML, se puede demostrar por Jenkins inmediato sin una transformación XSLT en el medio
  • admite impresoras tipos personalizados
  • tiempo consumido por indicación de prueba (Sospecho que esto también es posible con CPPUnit pero no he averiguado aún)
  • prueba de detector de eventos API (plug-ins definidos por el usuario)
  • prueba barajar
  • sin excepciones y RTTI

A ¿Corrijo al asumir que CppUnit no admite todo lo anterior? ¿Hay alguna función útil de GoogleTest? no disponible en CppUnit ¿Me falta?

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

Gracias!

+5

Algunas de las respuestas a [Comparación de marcos de pruebas de unidades de C++] (http://stackoverflow.com/questions/242926/comparison-of-c-unit-test-frameworks) abordan específicamente las características de GoogleTest. –

+2

Hace un par de años estaba haciendo una encuesta similar, GoogleTest no existía entonces. Me decidí por CXXTest, que tenía un mecanismo para enumerar los casos de prueba mediante un paso previo al análisis con Perl. Eso fue muy superior a CppTest. Dicho esto, no sé nada sobre GoogleTest. –

+1

¿Un corredor de prueba gráfico es una ventaja? Por lo general, desea algo que pueda automatizarse fácilmente, ya que la automatización significa que obtiene retroalimentación de prueba más fácilmente y con más frecuencia. –

Respuesta

7

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

Por otra parte, otra característica del marco googletest es la disponibilidad de 3 distintos niveles de programa de instalación/desmontaje:

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

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

Además, hay un complemento googletest para Eclipse CDT.

3

Si no ha mirado 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.

+0

¿Se puede liberar bajo una licencia permisiva de código abierto? Como Apache 2.0 o la licencia de MIT? –

+0

Honestamente, no recuerdo qué licencia se está utilizando, pero creo * que es la licencia MIT. – moswald

+0

Muchas gracias, pero aunque el texto es el mismo, License.txt no dice que es la licencia de MIT. ¿Te importaría agregarlo (cuando tienes tiempo, por supuesto), si está bien? Me gusta esto http://opensource.org/licenses/MIT? Creo que permitiría a más personas usar y probar este maravilloso marco :-) –

Cuestiones relacionadas