2009-09-23 16 views
8

Sono un programmatore di rubini e mi piace molto fare TDD. In questo momento sto programmando un po 'in C, ma mi piacciono i miei strumenti e il modo in cui programma con ruby. Quindi, sto cercando un framework per fare test unitari in C. Che cosa puoi dirmi a riguardo?Quadro di test unitario per C: Confronto

Ho già trovato alcune opzioni, come: cunit, cmockery, CuTest e altri. Il problema è che non so come valutare il migliore. Sto scrivendo un semplice compilatore per il mio corso universitario di compilatori.

Potrebbe aiutarmi?

+0

Mi piacerebbe avere qualcosa di semplice, come CUTest (http://cutest.sourceforge.net/) ma mi piacerebbe anche avere qualcosa con un grande risultato, come Cutter (http://cutter.sourceforge.net /). Ma sembra davvero che non possa averli entrambi. –

+0

Mi piacerebbe vedere una risposta anche a questa domanda. –

risposta

3

È possibile utilizzare qualsiasi framework di test di unità C o C++. È abbastanza facile chiamare le funzioni C da C++.

La mia opinione è che si desidera avere il minimo risultato possibile dai test. cioè se tutto è OK, dovrebbe stampare '100% passed'. Altrimenti dovrebbe solo stampare i dettagli dei fallimenti del test.

vedere xprogramming.com, scorrere verso il basso fino alla tabella Test unità e cercare i quadri C Language o C++. Il più 'standard' sembra essere cppUnit.

+0

In molti ambienti che usano C, è possibile * solo * usare C. Quindi i framework C++ probabilmente non sono utili qui, soprattutto perché l'OP sta parlando di un corso di compilatore al college che probabilmente non gli permetterà di usare C++ nel suo progetto. –

+0

È vero che, ad esempio, un compilatore C incorporato che gira sotto Windows, ma si rivolge a un microcontrollore compila solo C, ma sarebbe abbastanza facile compilare il codice, ad esempio, in Visual Studio. È quindi possibile scrivere test in C++ con qualsiasi framework di test dell'unità C++ desiderato. – quamrana

3

Ho usato gtest e ho trovato che è piuttosto facile da usare (è C++ però). Davvero, non importa troppo quale scegli. Scegline uno e imparalo.

+0

In molti ambienti che usano C, è possibile * solo * usare C. Quindi i framework C++ probabilmente non sono utili qui, soprattutto perché l'OP sta parlando di un corso di compilatore al college che probabilmente non gli permetterà di usare C++ nel suo progetto. –

+1

gtest è l'unico framework di test che mi è piaciuto in c/C++ –

+0

AFAIK gtest può anche essere utilizzato con C, poiché utilizza solo macro, quindi non dovrebbe esserci alcuna dipendenza C++. – helpermethod

1

C'è una pagina wiki che elenca le informazioni intorno al 20 C compatible unit testing frameworks. Anche se potrebbe non essere abbastanza informazioni per prendere una decisione, è un buon punto di partenza.

1

Unity, un framework di test per C ha un ricco insieme di asserzioni tra cui il bitwise e il confronto dei blocchi di memoria. Se non hai a che fare con una base di codice legacy di grandi dimensioni, ti consigliamo di utilizzare Ceedling, il progetto padre di Unity. Ceedling crea i tuoi test Unity, il codice di produzione e integra una bella struttura di simulazione chiamata CMock. CMock può generare automaticamente un simulatore/sostituto per un modulo dall'intestazione dell'interfaccia pubblica.

C'è un video che mostra come get started with Ceedling and Unity. (DISCLAIMER: ho creato il video).

Un'alternativa è CppUTest. Compilare 1 libreria statica (2 se si desidera utilizzare la struttura di derisione, CppUMock). I test sono scritti in C++ e si integra con il tuo progetto makefile esistente. Offre anche alternative di rilevamento perdite di memoria per malloc/free, new/delete. In confronto, le asserzioni non sono complete come Unity, ma è probabilmente più adatto per testare progetti legacy C/C++.