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
.hche 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. -
#includedel file.cdel 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?