2012-03-20 1 views
9

Ho impostato i primi passi sul nobile percorso dell'utilizzo dei test unitari per sviluppare la mia applicazione, ma si rivela essere piuttosto difficile. Sto sviluppando un'applicazione in Qt, quindi ho pensato di raggiungere il loro framework QTestLib. Ora capisco come fare i test unitari, ma non riesco a capire come incorporare i test unitari in un progetto. Supponiamo di avere un'applicazione per console che ha solo un file main.cpp e un file cpp e h per una classe che voglio sviluppare, ad esempio MyClass. Immagino che la cosa giusta da fare sia creare una corrispondente classe di test MyClassTest con i suoi file h e cpp. Ma dovrei metterlo nello stesso progetto? O piuttosto creare un progetto separato solo per i test unitari che avranno accesso ai file nel progetto "principale" (non sono sicuro di come lo farei ancora)?Utilizzo dell'unità QT Prove in un progetto - funzioni principali in conflitto (...)

E se l'applicazione principale e il test si trovano nello stesso progetto, come posso eseguire i test senza eseguire l'applicazione o viceversa? Ho provato ad incorporare i file di Qt's Tutorial 1 sui test delle unità in un progetto di console, ma il problema è che usano una macro QTEST_MAIN(TestQString) che si espande in una funzione main(...). Ciò causa conflitti con lo main(...) nel file main.cpp. Bene, posso rinominare l'uno o l'altro, ma il problema è ancora valido - come faccio a eseguire i test o l'applicazione stessa? Se ignoro la macro QTEST_MAIN (che è comunque una cattiva idea) disattivo i test. Se rinominare la funzione main(...) in main.cpp, l'applicazione effettiva non viene mai eseguita. Immagino che ci dovrebbe essere un modo per creare due eseguibili separati per il progetto, uno per testare l'unità in esecuzione e un altro per lanciare l'applicazione, ma non riesco a capire come farlo.

risposta

8

Definitivamente creare un progetto separato per i test. Se si organizza il progetto dell'applicazione e il progetto di test nelle directory affiancate, si dovrebbe essere in grado di fare riferimento alle unità del codice dal progetto dell'applicazione utilizzando percorsi relativi nel file test.pro.

Io uso il pratico test runner presentato su this blog.

+0

Mi sono appena imbattuto in quell'articolo pochi minuti fa, sembra davvero la strada da percorrere - grazie! – Puchatek