2009-09-23 10 views
8

Soy un programador de ruby ​​y realmente me gusta hacer TDD. En este momento, estoy programando un poco en C, pero me gustan mis herramientas y la forma en que programo con ruby. Entonces, estoy buscando un marco para hacer pruebas unitarias en C. ¿Qué me puedes decir al respecto?Marcos de prueba de unidad para C: Comparación

Ya encontré algunas opciones, como: cunit, cmockery, CuTest y otras. El problema es que no sé cómo evaluar el mejor. Estoy escribiendo un compilador simple para mi curso universitario de compiladores.

¿Me podría ayudar?

+0

Me gustaría tener algo simple, como CUTest (http://cutest.sourceforge.net/), pero también me gustaría tener algo con una gran salida, como Cutter (http://cutter.sourceforge.net /). Pero parece que no puedo tener ambas cosas. –

+0

Me gustaría ver una respuesta a esta pregunta también. –

Respuesta

3

Puede usar cualquier marco de prueba de la unidad C o C++. Es bastante fácil llamar a las funciones C desde C++.

Mi opinión es que desea tener la menor producción posible de sus pruebas. es decir, si todo está bien, debería imprimir '100% passed'. De lo contrario, solo debería imprimir los detalles de las fallas de prueba.

ver xprogramming.com, desplácese hacia abajo a la tabla de Pruebas de unidades y busque las estructuras C Language o C++. El más 'estándar' parece ser cppUnit.

+0

En muchos entornos que usan C, puede * solo * usar C. Entonces, los marcos C++ probablemente no sean útiles aquí, especialmente dado que el OP está hablando de un curso de compilación en la universidad que probablemente no le permita usar C++ en su proyecto. –

+0

Es cierto que, por ejemplo, un compilador de C incrustado que se ejecuta bajo Windows pero apunta a un microcontrolador solo compila C, pero sería bastante fácil compilar su código en, por ejemplo, Visual Studio. A continuación, puede escribir pruebas en C++ con el marco de prueba de unidades de C++ que desee. – quamrana

3

He usado gtest y he encontrado que es bastante fácil de usar (aunque es C++). Realmente, sin embargo, no importa demasiado cuál elegir. Solo elige uno y aprende.

+0

En muchos entornos que usan C, * solo * puede usar C. Entonces los marcos de C++ probablemente no sean útiles aquí, especialmente dado que el OP está hablando de un curso de compilación en la universidad que probablemente no le permita usar C++ en su proyecto. –

+1

gtest es el único marco de prueba que me ha gustado en c/C++ –

+0

AFAIK gtest también se puede usar con C, ya que solo utiliza macros, por lo que no debería haber ninguna dependencia de C++. – helpermethod

1

Hay una página wiki que enumera información sobre alrededor de 20 C compatible unit testing frameworks. Si bien puede no ser suficiente información para tomar una decisión, es un punto de partida decente.

1

Unity, un marco de prueba para C tiene un amplio conjunto de aserciones que incluyen comparaciones bit a bit y bloques de memoria. Si no está tratando con una gran base de código heredada, le recomendaría usar Ceedling, el proyecto principal de Unity. Ceedling construye sus pruebas de Unity, código de producción e integra un buen marco de burla llamado CMock. CMock puede generar automáticamente un simulacro/sustituto para un módulo desde su encabezado de interfaz pública.

Hay un video que le muestra cómo get started with Ceedling and Unity. (DESCARGO DE RESPONSABILIDAD: Creé el video).

Una alternativa, es CppUTest. Se compila en 1 biblioteca estática (2 si desea usar su marco de burla, CppUMock). Las pruebas se escriben en C++ y se integran con su proyecto de archivo MAKE existente. También ofrece alternativas de detección de fuga de memoria para malloc/free, new/delete. En comparación, sus afirmaciones no son tan exhaustivas como Unity, pero probablemente sean más adecuadas para probar proyectos heredados de C/C++.