2011-03-17 10 views
49

Así que me gusta y me gusta usar Google Test para un proyecto de C++ en el que participo. Solo estoy sacando un nuevo proyecto que será directamente C (una biblioteca) y hasta ahora no puedo ver ningún por qué no continuar usando Google Test, aunque es un framework C++. Tener un compilador de C++ disponible no será un problema.¿Está bien la prueba de Google para probar el código C?

¿Hay razones específicas por las que no debo usar Google Test para probar el código C directo?

Gracias.

+1

Entiendo por qué querrías hacer esto, gtest es bastante parsimonioso. Gran pregunta –

Respuesta

1

No pude nombrar uno. Supongo que habrá algunas cosas que no tienes en "normal" C. Por ejemplo, creo que el TestCase se deriva de una cierta clase. Pero dentro de la prueba puedes probar lo que quieras y ¿por qué no C?

12

Como todos los códigos C++ de Google, Google Test no usa excepciones, por lo que el flujo de seguridad de excepción no será un problema. Siempre que sus encabezados sean compatibles con C++ (sin usar palabras clave de C++, exportar símbolos con el enlace correcto), debería estar bien.

2

Jason, ser conscientes de ello !!! : D

Como dijo Meekrosoft, sí, es posible. También utilicé su sitio web cuando traté de hacerlo. Funciona, pero hay un gran problema:

¡GTest es una herramienta objetada y el lenguaje C no lo es!

En el ejemplo, en GTEST que tienen una gran cantidad de funciones (80% de API entero) ese objeto solicitud como parámetro, por ejemplo:

EXPECT_CALL(turtle, PenDown())    // turtle is object(class) and PenDown() is method of that object 
     .Times(AtLeast(1)); 

desde el sitio web GTEST https://code.google.com/p/googlemock/wiki/ForDummies por lo que va a utilizar sólo las macros como expect_equal, expect_bigger_than y así sucesivamente ...

Me gustaría sugerirle la herramienta CMocka (u otras herramientas de prueba de la unidad C). También es de google (modificado por un grupo de desarrolladores que no son de Google) y se crea directamente para el lenguaje C. Yo uso este cuando quiero probar el código fuente de tipo C.

espero que esto ayude .. :-) tenga un buen día .. :-)

+3

EXPECT_CALL no está definido en GoogleTest, sino en GoogleMock (un marco de burla, no un marco de prueba de unidades). GoogleTest define macros como EXPECT_EQ y EXPECT_TRUE, que se adaptan perfectamente al código de procedimiento de pruebas unitarias (no OO). Actualmente lo estoy usando para un proyecto, y funciona bien. – weberc2

1

Sólo pensé que me gustaría añadir otro punto: desde GTEST es C++, se le parseando sus cabeceras C bajo prueba como C++. Esto significa que las pruebas no garantizan que los encabezados sean consumibles desde C. Recientemente me encontré con esto con una biblioteca de C que estoy creando.

Cuestiones relacionadas