Sto scrivendo una semplice suite di test dell'unità whitebox per un progetto su cui sto lavorando in C. Il progetto è suddiviso in moduli (ognuno ha un file .c
con un file .h
associato) e tutti i moduli vengono compilati insieme in un file .so
.
Ovviamente, il file .h
per ogni modulo contiene prototipi di funzioni per qualsiasi funzione che deve essere visibile agli altri moduli, ma non contiene prototipi per funzioni interne o di supporto.
La mia suite di test è una raccolta di file .c
in una directory separata. Ogni file .c
è responsabile della verifica di un modulo specifico, oltre a un file master che esegue tutti i test. Tutti questi file sono compilati in un unico file eseguibile. Attualmente questo binario è collegato al .so
binario del progetto e sto #include
nei file .h
del progetto nei singoli file di test del modulo, a seconda dei casi. Questo mi permette di testare tutte le funzioni "pubbliche".
Vorrei anche testare direttamente alcune delle funzioni interne e di supporto. Posso pensare ad alcuni modi per farlo.
- Vai avanti e imposta tutte le funzioni di un modulo definite nel file di intestazione di quel modulo. Non voglio farlo perché sembra una cattiva pratica.
- Crea una seconda raccolta di file
.h
che contengono i prototipi per tutte le funzioni interne / di supporto e includi questi nei file di test appropriati. Sono riluttante a farlo perché sembra molto lavoro da mantenere. -
#include
del file.c
del modulo direttamente. Questo sarebbe facile da mantenere, ma mi farebbe sentire così sporco dentro.
Quale (se esiste) di queste tecniche è il modo migliore per farlo?