Introduzione a CppUTest
·
14 mag 2017

Punti Chiave
CppUTest è un framework di test leggero e attivamente mantenuto in stile xUnit per C/C++, con uno strato di integrazione C che funziona senza problemi anche in codebase pesanti in C.
Puoi installarlo tramite gestori di pacchetti (distribuzioni Linux, Homebrew) o clonare il repository GitHub.
Un'installazione minima consiste in:
una directory di produzione
src/,una directory di test
t/,un runner di test (
CommandLineTestRunner), emoduli di test utilizzando i blocchi
TEST_GROUPeTEST().
CppUTest fornisce un helper MakefileWorker.mk che semplifica la creazione di test, il collegamento delle librerie e la gestione dei flag.
La rilevazione delle perdite di memoria è abilitata per impostazione predefinita tramite sovrascritture malloc/free, catturando le perdite all'interno del codice sorgente testato.
La copertura del codice tramite gcov si integra facilmente abilitando
CPPUTEST_USE_GCOV=Y, producendo report di copertura completi e sommari HTML.Il framework include funzionalità avanzate: mocking, plugin, script di aiuto e interoperabilità diretta con C — utili per codebase aziendali complesse.
Punti salienti del Q&A
Che cos'è CppUTest e perché usarlo?
È un robusto framework di testing in stile xUnit per C/C++ con un'API pulita, macro di asserzione integrate, rilevamento delle perdite e sviluppo attivo — ideale per sistemi legacy o moderni.
Come strutturi un progetto di base utilizzando CppUTest?
Come esegui tutti i test?
Il runner del test utilizza:
Come si costruiscono i test senza configurare manualmente le opzioni del compilatore?
Usa
MakefileWorker.mkdi CppUTest, che gestisce automaticamente le flag, il linking e l'esecuzione dei test.CppUTest può rilevare perdite di memoria automaticamente?
Sì. Sovrascrive malloc/free durante le costruzioni di test, segnalando:
quale test ha causato la perdita,
dove è avvenuta,
dimensione della perdita e contenuti di memoria.
Esempio di output di errore:
Come posso generare la copertura del codice?
Abilita:
CPPUTEST_USE_GCOV=YAssicurati che
filterGcov.shsia disponibile in$(CPPUTEST_HOME)/scripts/.Esegui: make
gcovQuesto produce
.gcov, testo di riepilogo e rapporti di copertura HTML.
Cosa può fare CppUTest oltre ai test di base?
framework di mocking
sistema di plugin
script di automazione helper
integrazione nativa con C
macro di affermazione estese
Per chi è più adatto CppUTest?
Le squadre che lavorano con sistemi integrati, piattaforme C, servizi C++ o qualsiasi ambiente in cui l'affidabilità e la sicurezza della memoria devono essere continuamente validate.
In SparkPost, dedichiamo molto tempo e impegno per testare il nostro codice. La nostra piattaforma è scritta in C e recentemente ho ricercato come integrare un framework di unit testing chiamato “CppUTest”, che fornisce test in stile xUnit per C/C++. Questo framework è robusto, ricco di funzionalità e in fase di sviluppo attivo, il che lo rende una scelta eccellente. Fornisce anche uno strato di integrazione C che lo rende facile da usare con il nostro codice C della piattaforma, anche se la maggior parte del framework è in C++. Questo tutorial tratta di come iniziare a utilizzare CppUTest nei tuoi progetti.
Interessato a saperne di più?
Questo è solo la punta dell'iceberg per quanto riguarda tutte le funzionalità contenute in questo strumento. Oltre alle basi discusse qui, include anche un framework di mocking, un layer di integrazione C diretto e un framework di plugin, per citarne alcune significative. Il repository contiene anche un'intera directory di script di supporto che possono aiutare ad automatizzare alcune delle parti di routine nel lavoro con il framework.
Spero che le informazioni qui ti aiutino a migliorare la qualità del tuo codice C/C++ con questo fantastico strumento!
Scaricando CppUTest
La pagina del progetto CppUTest è disponibile sul sito ufficiale, e il repository è su github. È anche incluso nei repository di gestione dei pacchetti per molte distro linux, così come in homebrew su Mac OS. Gli esempi che seguono sono stati eseguiti su Mac OS X, ma derivano da codice scritto per Red Hat, il sistema operativo su cui gira la nostra piattaforma.
Le basi sono ben documentate sulla pagina principale di CppUTest. Ci passeremo velocemente e arriveremo ad alcune delle caratteristiche più interessanti.



