2008-12-22 23 views
22

¿Cómo empiezo a hacer pruebas unitarias en C++?Pruebas unitarias en C++

He utilizado Junit al codificar en Java y me pareció muy útil. ¿Hay algo similar en C++? Que recomiendas ?

+6

@Kim: Sí, y este gran nuevo servicio me llevó hasta aquí, gracias a esta pregunta. SO no solo son preguntas y respuestas, también tiene la opinión de la comunidad y los comentarios sobre las respuestas. – ereOn

Respuesta

7

Compruebe CppUnit, es el puerto jUnit para C++.

1

Sin saber a qué plataforma/compilador se dirige, solo puedo hacer una recomendación general. He usado this (CppTest) con bastante éxito en el pasado. Hay un marco simple llamado UnitTest++ que parece interesante.

6

Buena ronda here.

Usamos Boost.Test, y somos capaces de hacer una buena integración continua multiplataforma.

2

Mi favorito personal es TUT. Las dos razones principales son que 1) no obliga a Java-isms, sino que aprovecha lo que C++ es, y 2) usted tiene control sobre él, escribe el ejecutable (tengo una plantilla que utilicé), el informe, etc. (proporciona una versión basada en la transmisión por defecto).

Para mí sigue mucho la filosofía de KISS, 2 encabezados, sin macros, sin analizadores, simplemente el código antiguo de C++ con un pequeño código esqueleto.

http://tut-framework.sourceforge.net/

7

UnitTest++, la leyenda cuenta que unittest ++ fue escrito por el autor de este comparison de marcos de pruebas unitarias.

+0

+1, ¡uso este marco y puedo recomendarlo! Es más que solo una leyenda. La versión 1.0 está aquí: http://gamesfromwithin.com/unittest-v10-released (en el mismo blog que el enlace anterior ...) – Kleist

3

No he estado contento con ningún marco de prueba de la unidad C++. Como C++ no tiene reflejo, es difícil escribir convenientes herramientas de prueba de unidades. CxxTest es tan bueno como he encontrado. Lo he usado en algunos proyectos, pero generalmente solo escribo mis propias pruebas sin un marco o usando un marco crudo que escribí yo mismo.

+0

Es posible que desee comprobar CATCH (enlace de mi respuesta) – philsquared

1

Aeryn es otro marco C++ Testing vale la pena mirar

8

Recientemente escribí una serie de 5 publicaciones de blog que cubrían pruebas unitarias en C++ con impulso. Proporciona instrucciones paso a paso sobre cómo hacer esto en Visual Studio.

  • Part 1: cómo empezar a hacer pruebas unitarias en C++ con Boost.Test.

  • Part 2: el marco de aserción proporcionado por Boost.Test en el contexto de un simple ejercicio de programación que demuestra el desarrollo basado en pruebas.

  • Part 3: continuando con el desarrollo basado en pruebas para completar la funcionalidad del método PrimeFactors :: Generate.

  • Part 4: desarrollo de interfaz de usuario controlada por prueba.

  • Part 5: las instalaciones en Boost.Test para compartir acciones comunes de configuración y desmontaje entre pruebas y organizar pruebas en suites.

2

Acabo de empujar mi propio marco, CATCH, por ahí. Todavía está en desarrollo, pero creo que ya supera a la mayoría de los otros marcos. Diferentes personas tienen diferentes criterios, pero he intentado abarcar casi todo el terreno sin demasiadas concesiones. Eche un vistazo a mi entrada de blog vinculada para una prueba. Mis cinco mejores características son:

  • Sólo encabezado
  • Registro automático de la función y las pruebas basadas en métodos
  • Se descompone expresiones estándar de C++ en LHS y RHS (por lo que no necesita una familia entera de las macros de aserción) .
  • Apoyo para las secciones anidadas dentro de una luminaria basada en la función
  • pruebas nombre utilizando lenguaje natural - Los nombres de función/método se generan

También tiene enlaces de Objective-C.