¿Cómo se implementa la unidad de pruebas en gran escala de proyectos de C++?[cerrado]

StackOverflow https://stackoverflow.com/questions/91683

  •  01-07-2019
  •  | 
  •  

Pregunta

Creo firmemente en el uso de la unidad de pruebas como parte de la construcción de grandes aplicaciones multi-plataforma.Actualmente, estamos pensando en tener nuestra unidad de pruebas dentro de un proyecto independiente.Esto tiene la ventaja de mantener nuestra base de código limpio.Creo, sin embargo, que esa sería separar el código de la prueba a partir de la implementación de la unidad.¿Qué piensa usted de este enfoque y existen herramientas como JUnit para aplicaciones de c++?

¿Fue útil?

Solución

Hay muchas Pruebas de la Unidad de frameforks para C++.CppUnit es, sin duda, no el que yo iba a elegir (al menos en su versión estable 1.x, ya que carece de muchas pruebas, y requiere una gran cantidad de líneas redundantes de códigos).Hasta ahora, mi preferido es el marco CxxTest, y pienso en la evaluación de La fructosa algún día.

De cualquier manera, hay un par de "papeles" que evaluar C++ TU marcos :

Otros consejos

Ese es un enfoque razonable.

He tenido muy buenos resultados, tanto con UnitTest++ y Boost.Prueba

He mirado en CppUnit, pero para mí, se parecía más a una traducción de la JUnit cosas de algo dirigido a C++.

Actualización: En estos días yo prefiero usar Captura.Me pareció que para ser eficaces y fáciles de usar.

Usted debe separar su base de código compartido (dinámica) de la biblioteca y, a continuación, escribir la mayor parte de su unidad de pruebas para esta biblioteca.

Hace dos años (2008) y he estado involucrado en grandes LSB proyecto de Infraestructura desplegada por La Fundación Linux.Uno de los objetivos de este proyecto era escribir pruebas unitarias para 40.000 funciones de las bibliotecas del núcleo de Linux.En el contexto de este proyecto, hemos creado el AZOV tecnología y la herramienta básica nombre La API de Cordura Autotest con el fin de generar automáticamente todas las pruebas.Usted puede tratar de utilizar esta herramienta para generar pruebas unitarias para su base de biblioteca (ies).

Yo uso UnitTest++.Las pruebas están en un proyecto independiente, pero las pruebas reales están entrelazados con el código real.Ellos existen en una carpeta dentro de la sección bajo prueba.es decir:
Miproyecto\src\ <- fuente de la aplicación real
Miproyecto\src\pruebas <- la fuente de las pruebas
Si tiene carpetas anidadas (y que no) entonces, ellos también tienen sus propios \pruebas subdirectorio.

Cppunit es un equivalente directo de Junit para aplicaciones de C++ http://cppunit.sourceforge.net/cppunit-wiki

Personalmente, he creado la unidad de pruebas en un proyecto diferente, y creado un configuración de generación que construyó todas las pruebas de unidad y código fuente dependiente.En algunos casos, quise probar un miembro privado functionss de una clase, de modo que tomé la clase de Prueba a un amigo de clase para el objeto de la prueba, pero se escondió el amigo declaraciones al edificio en "no prueba" de las configuraciones a través de preprocesador declaraciones.

Yo terminé haciendo estos codificación de la gimnasia como yo era la integración de las pruebas en el código heredado sin embargo.Si usted está empezando a cabo con el propósito de la unidad de prueba de un mejor diseño puede ser simple.

Usted puede crear un proyecto de prueba unitaria para cada biblioteca en el árbol de código fuente en un subdirectorio de la biblioteca.Puedes terminar con un piloto de pruebas de la aplicación para cada biblioteca, de la cual se facilita la ejecución de un único conjunto de pruebas.Poniéndolos en un subdirectorio, que mantiene su base de código limpio, sino que también mantiene las pruebas cerca de el código.

Los Scripts pueden ser fácilmente escrita para ejecutar todas las suites de prueba en el árbol de fuentes y recoger los resultados.

He estado utilizando una versión modificada de la original CppUnit durante años con gran éxito, pero hay otras alternativas. GoogleTest se ve muy interesante.

Yo creo que tu en el camino correcto con pruebas de unidad y de su gran plan para mejorar la fiabilidad de su producto.

A pesar de que la unidad de pruebas no va a resolver todos sus problemas al convertir su aplicación para diferentes plataformas o incluso de diferentes sistemas operativos.La razón de esto, es el proceso de unidad de la prueba pasa a través de descubrir errores en su aplicación.Simplemente lanza tantas entradas imaginables en su sistema y espera un resultado en el otro extremo.Es como llegar a un mono constantemente libra en el teclado y la observación de los resultados(Beta testers).

Para llevarlo al siguiente paso, con buena prueba de unidad que usted necesita para centrarse en su diseño interno de la aplicación.El mejor método que he encontrado es utilizar un patrón de diseño o proceso de diseño llamado "contrato de programación" o "Diseño por contrato".El otro libro que es muy útil para la construcción de la fiabilidad en el núcleo de su diseño fue.

La depuración del Proceso de Desarrollo:Estrategias prácticas para mantener la concentración, Golpeando las Fechas de envío, y la Construcción de Equipos Sólidos.

En nuestro equipo de desarrollo, nos miramos muy de cerca lo que consideramos un error del programador, desarrollador de error, error de diseño, y cómo podríamos usar ambas pruebas unitarias y también la construcción de fiabilidad en nuestro paquete de software a través de DBC y siguiendo el consejo de depuración en el desarrollo del proceso.

El uso de tut http://tut-framework.sourceforge.net/ muy simple, sólo archivo de encabezado no sólo de macros.Puede generar XML de resultados

CxxTest es también digno de una mirada para el peso ligero, fácil de usar plataforma de la cruz JUnit/CppUnit/xUnit-como marco para C++.Nos resulta muy sencillo añadir y desarrollar pruebas

Aeryn es otro de C++ Marco de Pruebas que vale la pena mirar

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top