2011-08-26 11 views
7

Recientemente, necesito agregar prueba de unidad a un programa heredado.Prueba de unidad en el programa que tiene muchas macros

Pero en él, hay un montón de macros, como

#ifdef CONFIG_XXX 
do xxx 
#endif 

#ifdef CONFIG_YYY 
do yyy 
#endif 

Actualmente, la ruta del programa genérico están cubiertos por las pruebas unitarias. Por lo tanto, quiero agregar pruebas para cubrir las partes macro internas (diferente ruta del programa).

Parece que necesito compilar y ejecutar mi programa con ciertas macros cada vez, y cómo diseñar la composición de las macros para cubrir la ruta del programa y reducir los tiempos de compilación realmente no es fácil.

Por lo tanto, planeo mover todo el código relacionado con hardware a la carpeta arch, ahora, las macros se movieron de archivos c a makefile, pero aún necesita compilarse con ciertas macros cada vez para que UT funcione.

¿Alguien tiene experiencia en este problema antes?

Gracias por sus comentarios.

+1

¿Podría considerar reemplazar cada macro con un 'if (config.XXX)'? De esta forma, eliminas la necesidad de recompilar. –

+0

No puedo, ya que la diferencia entre la instrucción macro y if. –

+0

Lo que quiero decir es que refactorice su código para tomar una estructura 'config' como entrada. Esta estructura podría tener un conjunto de variables de indicador, cada una correspondiente a una de sus macros. –

Respuesta

2

Creo que puedes usar gcc -D para generar muchas versiones del programa binario. compilar y ejecutarlos con un script para hacer eso :)

+0

En la pregunta: "Parece que necesito compilar y ejecutar mi programa con ciertas macros cada vez", gcc -D se usa para que esto suceda. –

Cuestiones relacionadas