2010-07-21 19 views
5

Voglio sapere se qualcuno di voi ragazzi usa TDD nei vostri progetti C++ e come funziona rispetto ai linguaggi gestiti come C# e Java. E quali framework utilizzi per automatizzare i test sui progetti C++?È possibile/produttivo abbastanza per TDD in progetti C++?

+1

UnitTest ++ è quello che ho usato per la maggior parte dei miei progetti. –

+0

Dai un'occhiata a questa serie di video su C++ e TDD: http://www.vimeo.com/album/254486/video/13240481 –

risposta

1

Test Driven Development è possibile in tutte le lingue. Sono necessari gli strumenti e le metodologie di test giusti per la lingua e potrebbe essere necessaria un'infrastruttura di test personalizzata per il progetto.

Ho trovato CppUnit (almeno 1.x) per essere un framework molto povero - sembra utilizzare gli idiomi Java/C# in un linguaggio C++ e non ha il supporto per i costrutti STL.

Se si desidera un buon esempio di Test Driven Development (in C), consultare il progetto Wine - http://test.winehq.org/data/ mostra i risultati del test tra le diverse versioni di Windows, Wine e i diversi commit nel repository Wine. Hanno una propria infrastruttura di test personalizzata.

+0

Nota che mentre le persone continuano ad usare CppUnit, l'autore originale (Michael Feathers) ha fatto una riscrittura completa , brevemente spiegato in "Lavorare efficacemente con il codice legacy". Il suo approccio revisionato fa un uso intelligente dei macro, che è possibile vedere in CppUTest, UnitTest ++ e googletest. –

2

Due utili framework di test C++ che non sembrano essere stati ancora menzionati sono Boost test e Google Test.

+0

+1 per Google Test – TheJuice

1

Recentemente mi sono trasferito da un progetto C# che è stato sviluppato utilizzando TDD a un progetto che utilizza C++. Temevo parecchio, ma trovo che fare C++ con TDD sia molto più divertente e il codice è più robusto di quello che ricordo da esperienze passate (non TDD) con C++.

Stiamo utilizzando Google Test. Non è così facile da usare come NUnit/MbUnit, ma sembra funzionare piuttosto bene. C'è anche una struttura di derisione di Google http://code.google.com/p/googlemock, ma non l'ho ancora utilizzata.