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++?
risposta
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.
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. –
Due utili framework di test C++ che non sembrano essere stati ancora menzionati sono Boost test
e Google Test
.
+1 per Google Test – TheJuice
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.
- 1. C# è abbastanza veloce per i giochi
- 2. Infrastruttura richiesta per TDD?
- 3. Piggyback volatile. È abbastanza per la visibilità?
- 4. È abbastanza potente per queste funzionalità?
- 5. TDD per un'applicazione OSX
- 6. Overriding hashCode() - è abbastanza buono?
- 7. Progetti open source che dimostrano i principi TDD e SOLID
- 8. è Boost.Geometry abbastanza maturo?
- 9. Meteor.js è abbastanza stabile per la produzione?
- 10. Come avviare TDD in Django?
- 11. Come si esegue TDD in Xcode?
- 12. "Abbastanza tempo" per GWT
- 13. Perché volatile non è abbastanza?
- 14. Il compilatore C# è abbastanza intelligente da ottimizzare questo codice?
- 15. Quando Popen.communicate() non è abbastanza?
- 16. Decomposizione in java, quando è abbastanza sufficiente?
- 17. TDD per Cocos2d-X in android
- 18. BDD e TDD per node.js?
- 19. Buona risorsa per imparare BDD, TDD (ruby, C#, javascript)
- 20. TDD iOS tutorial
- 21. Emacs come IDE per grandi progetti C++
- 22. C# tooltip non visualizza abbastanza a lungo
- 23. DevExpress per ASP.NET abbastanza veloce
- 24. Che cosa è "abbastanza sanificazione" per un URL
- 25. Utilizzo di Maven per i progetti C/C++
- 26. TDD - Refactoring in black-box?
- 27. MSBuild: Custom.After.Microsoft.Common.targets per progetti C++ nativi in VS2010
- 28. Mono è abbastanza robusto per uno sviluppo aziendale serio?
- 29. Libreria client HTTP C/C++ per progetti incorporati
- 30. L'autodoc di Sphinx non è abbastanza automatico
UnitTest ++ è quello che ho usato per la maggior parte dei miei progetti. –
Dai un'occhiata a questa serie di video su C++ e TDD: http://www.vimeo.com/album/254486/video/13240481 –