2011-08-26 13 views
7

Recentemente, ho bisogno di aggiungere test di unità a un programma legacy.Test di unità sul programma che ha un sacco di macro

Ma in esso, ci sono un sacco di macro, come

#ifdef CONFIG_XXX 
do xxx 
#endif 

#ifdef CONFIG_YYY 
do yyy 
#endif 

Attualmente, il percorso del programma generico sono coperti da unit test. Quindi, voglio aggiungere test per coprire le parti macro interne (percorso del programma diverso).

Sembra che ho bisogno di compilare ed eseguire il mio programma con determinati macro ogni volta, e come progettare la composizione di macro per coprire il percorso del programma e ridurre i tempi di compilazione non è davvero facile.

Quindi, ho intenzione di spostare tutto il codice relativo all'hardware nella cartella arch, ora i macro sono stati spostati da file c a makefile, ma devono comunque essere compilati con determinati macro ogni volta per far funzionare UT.

Qualcuno ha esperienze su questo problema prima?

Grazie per i vostri commenti.

+1

Potresti prendere in considerazione la sostituzione di ogni macro con un 'if (config.XXX)'? In questo modo, elimini la necessità di ricompilare. –

+0

Non posso, dal momento che la differenza di macro e se la dichiarazione. –

+0

Ciò che intendo è, refactoring del codice per prendere una struttura 'config' come input. Questa struct potrebbe avere un set di variabili flag, ognuna corrispondente a una delle tue macro. –

risposta

2

Penso che si possa semplicemente usare gcc -D per generare molte versioni del programma binario. compilare ed eseguirli con uno script per farlo :)

+0

Nella domanda: "Sembra che ho bisogno di compilare ed eseguire il mio programma con determinati macro ogni volta", gcc -D è usato per fare in modo che ciò accada. –

Problemi correlati