Domanda

Credo fortemente nell'utilizzo di unità di test come parte della costruzione di grandi applicazioni multi-piattaforma.Siamo spiacenti, hanno intenzione di avere la nostra unità di test all'interno di un progetto separato.Questo ha il vantaggio di mantenere la nostra base di codice pulito.Penso, tuttavia, che questo avrebbe separato il codice di test con l'attuazione dell'unità.Cosa ne pensi di questo approccio e ci sono strumenti come JUnit per le applicazioni in c++?

È stato utile?

Soluzione

Ci sono molti Test di Unità frameforks per C++.CppUnit non è certamente quello vorrei scegliere (almeno nella sua versione stabile 1.x, come manca a molti test, e richiede un sacco di linee ridondanti di codici).Finora, il mio quadro preferito è CxxTest, e ho intenzione di valutazione Fruttosio da qualche giorno.

Qualsiasi modo, ci sono un paio di "carte" che valutano C++ TU quadri :

Altri suggerimenti

Questo è un approccio ragionevole.

Ho avuto ottimi risultati sia con UnitTest++ e Boost.Prova

Ho guardato CppUnit, ma per me è più sentita come una traduzione di JUnit roba di qualcosa di mira in C++.

Aggiornamento: In questi giorni io preferisco usare Cattura.Ho trovato per essere efficace e semplice da usare.

Si dovrebbe separare il codice di base di un comune (dinamico) biblioteca e poi scrivere la maggior parte del vostro test di unità per la raccolta.

Due anni fa (2008) sono stato coinvolto in grandi LSB progetto di Infrastruttura distribuita dalla Linux Foundation.Uno degli obiettivi di questo progetto era quello di scrivere unit test per 40.000 funzioni da Linux le librerie di base.Nell'ambito di questo progetto abbiamo creato il AZOV tecnologia e lo strumento di base denominato API Sanità Autotest per generare automaticamente tutti i test.Si può provare a utilizzare questo strumento per generare test di unità per la vostra base di libreria (ies).

Io uso UnitTest++.I test sono in un progetto separato, ma il test vero e proprio, si intrecciano con il codice vero e proprio.Presenti in una cartella sotto la sezione in prova.vale a dire:
MyProject\src\ <- origine dell'attuale app
MyProject\src est <- l'origine del test
Se si dispone di cartelle nidificate (e non) quindi anche loro avranno il loro est sottodirectory.

Cppunit è un equivalente diretto di Junit per le applicazioni in C++ http://cppunit.sourceforge.net/cppunit-wiki

Personalmente, ho creato il test di unità in un progetto diverso, e creato un apposito configurazione di generazione che ha costruito tutti i test di unità e dipendente del codice sorgente.In alcuni casi ho voluto testare membro privato functionss di una classe e quindi ho fatto il Test di classe, un amico di classe per l'oggetto da testare, ma nascosto l'amico dichiarazioni durante la creazione di "non-test" configurazioni preprocessore dichiarazioni.

Ho finito di fare questi codifica ginnastica come mi è stata quella di integrare le prove in codice legacy, tuttavia.Se stai iniziando con lo scopo di unit testing, un design migliore potrebbe essere semplice.

È possibile creare un progetto di test di unità per ogni libreria nell'albero dei sorgenti in una sottodirectory della biblioteca.Si finisce con un test driver applicazione per ogni biblioteca, il che rende più facile per eseguire una singola suite di test.Mettendoli in una sottodirectory, mantiene la vostra base di codice pulito, ma mantiene anche le prove di chiudere il codice.

Gli script possono facilmente essere scritto per eseguire tutte le suite di test nell'albero dei sorgenti e raccogliere i risultati.

Sto usando una versione personalizzata dell'originale CppUnit per anni con grande successo, ma ci sono altre alternative, ora. GoogleTest sembra interessante.

Penso che il sulla strada giusta con i test di unità e il suo grande piano per migliorare l'affidabilità del prodotto.

Anche se i test di unità non ha intenzione di risolvere tutti i vostri problemi durante la conversione di applicazioni per diverse piattaforme o anche sistemi operativi diversi.La ragione di questo, è il processo di unità di test passa attraverso per scoprire bug nell'applicazione.È semplicemente tira come molti ingressi immaginabile nel vostro sistema e attende un risultato su l'altra estremità.La sua voglia di farsi una scimmia costantemente sterlina alla tastiera e osservando i risultati(Beta tester).

Per prendere per il passo successivo, con buona unità di test è necessario concentrarsi sulla struttura interna di applicazione.L'approccio migliore che ho trovato è stato quello di utilizzare un modello di progettazione o design processo denominato "contratto di programmazione" o "Design by contract".L'altro libro che è molto utile per la costruzione di affidabilità nel tuo core design è stato.

Il debug del Processo di Sviluppo:Strategie pratiche per Rimanere Concentrati, di Colpire le Date di spedizione, e la Costruzione di Solide Squadre.

Nel nostro team di sviluppo, abbiamo guardato molto attentamente a ciò che noi riteniamo essere un programmatore di errore, sviluppatore di errore, errore di progettazione e di come potremmo utilizzare entrambi i test di unità e anche la costruzione di affidabilità nel nostro pacchetto software attraverso DBC e seguendo i consigli di debug di sviluppo del processo.

Utilizzando tut http://tut-framework.sourceforge.net/ molto semplice, basta file di intestazione non solo macro.In grado di generare XML risultati

CxxTest è anche la pena dare un'occhiata per il peso leggero, facile da usare, cross platform JUnit/CppUnit/xUnit-come quadro di riferimento per C++.Per noi è molto semplice aggiungere e sviluppare test

Aeryn è un altro C++ Framework di Test la pena di guardare

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top