Test Driven Development implica scrivere il test prima del codice e seguire un certo ciclo :
- Scrivi test
- Verifica test (esegui)
- Scrivi il codice di produzione
- Verifica test (esegui)
- Pulizia del codice di produzione
- Verifica test (esegui)
Per quanto mi riguarda, ciò è possibile solo se la soluzione di sviluppo consente di passare rapidamente dal codice di produzione a quello di test e di eseguire il test per una determinata parte del codice di produzione in modo estremamente rapido.
Ora, sebbene esistano molti Unit Testing Frameworks per C ++ (sto usando Bost.Test atm.) Sembra che non esista davvero nessuna soluzione decente (per C ++ nativo ) di Visual Studio (Plugin) che rende il TDD ciclo sopportabile indipendentemente dalla struttura utilizzata.
"Sopportabile" significa che è un clic per eseguire un test per un determinato file cpp senza dover impostare manualmente un progetto di test separato ecc. "Sopportabile" significa anche che un semplice test inizia (collegamento!) E si esegue molto rapidamente .
Quindi, quali strumenti (plugin) e quali tecniche sono disponibili per rendere possibile il ciclo TDD per lo sviluppo C ++ nativo con Visual Studio?
Nota: sto bene con strumenti gratuiti o "commerciali".
Per favore : nessuna raccomandazione quadro. (A meno che il framework non abbia un plug-in Visual Studio dedicato e si desideri consigliare il plug-in.)
Modifica nota : le risposte finora hanno fornito collegamenti su come integrare un framework di unit test in Visual Studio. Le risorse descrivono più o meno come ottenere la compilazione del framework UT e l'esecuzione dei primi test. Questo è non è ciò che questa domanda è circa. Sono dell'opinione che lavorare davvero in modo produttivo, avendo i Test Unit in una manutenzione manuale (!), Vcproj separato dalle tue classi di produzione aggiungerà così tanto sovraccarico che TDD "non è possibile". Per quanto ne so, non si aggiungono "progetti" extra a una cosa Java o C # per abilitare Unit Test e TDD, e per una buona ragione. Questo dovrebbe essere possibile con C ++ dato gli strumenti giusti, ma sembra (questa domanda riguarda) che ci sono pochissimi strumenti per TDD / C ++ / VS.
Cercando su internet, ho trovato uno strumento, VisualAssert , che sembra mirare nella giusta direzione. Tuttavia, non sembra essere molto diffuso (rispetto a CppUnit, Boost.Test ecc.).
Modifica: vorrei aggiungere un commento al contesto per questa domanda. Penso che faccia un buon riassunto del delineare (parte del) problema: (commento di Billy ONeal )
Visual Studio non utilizza "script di compilazione" ragionevolmente modificabili dall'utente. Un progetto produce un binario. Inoltre, Java ha la proprietà che Java non costruisce mai un binario completo: il binario che costruisci è solo un ZIP dei file di classe. Pertanto è possibile compilare separatamente quindi JAR insieme manualmente (usando ad esempio 7z). C ++ e C # collegano entrambi i loro binari, quindi in generale non puoi scrivere uno script del genere. Il più vicino che puoi ottenere è compilare tutto separatamente e quindi fare due collegamenti (uno per la produzione, uno per i test).
7z
.). C ++ e C # collegano entrambi i loro binari, quindi in generale non puoi scrivere uno script del genere. Il più vicino che puoi ottenere è compilare tutto separatamente e quindi fare due collegamenti (uno per la produzione, uno per i test).
As far as I am aware, you do not add extra "projects" to a Java or C# thing to enable Unit Tests and TDD,
<- Non penso sia corretto. In genere hai più progetti anche in C #; non vuoi spedire il tuo codice di test nel tuo file binario di produzione.