2010-04-21 20 views
9

Sto appena iniziando a utilizzare QTestLib. Ho attraversato il manual e il tutorial. Anche se capisco come creare test, non sto ottenendo come rendere questi test convenienti da eseguire. Il mio background di test unitario è NUnit e MSTest. In quegli ambienti, era banale (almeno usando una GUI) alternare l'esecuzione di un singolo test, o tutti i test in una singola classe di test, o tutti i test dell'intero progetto, semplicemente facendo clic con il tasto destro.Test unitario in QTestLib - esecuzione di test/test singoli in classe/tutti i test

Tutto quello che vedo in QTestLib è che si utilizza la macro QTEST_MAIN per eseguire i test in una singola classe, quindi compilare e testare ciascun file separatamente; oppure utilizzare QTest::qExec() in main() per definire quali oggetti testare, quindi modificarli manualmente e ricompilare quando si desidera aggiungere/rimuovere classi di test.

Sono sicuro che mi manca qualcosa. Mi piacerebbe essere in grado di facilità:

  • Esegui un unico metodo di prova
  • Eseguire le prove in un'intera classe
  • eseguire tutti i test

Una di queste potrebbe chiamare l'appropriato funzioni di setup/teardown.

MODIFICA: Ora disponibile. Deve esserci un modo migliore, o un runner di test dell'interfaccia grafica che lo gestisca per te o qualcosa del genere. Se stai utilizzando QtTest in un ambiente basato su test, fammi sapere che cosa funziona per te. (script, i corridori di test, etc.)

+0

Si dovrebbe dare un'occhiata a: http://stackoverflow.com/questions/9944507/how-to-compose-all-qttestlib-unit-tests-results-in-a-single-file-while-using- a/10165709 # 10165709 – muenalan

risposta

5

È possibile eseguire i test solo selezionati (metodi di prova) passando i nomi di test come command line arguments:

myTests.exe myCaseOne myCaseTwo 

Verrà eseguito tutti inits/ripuliture troppo. Sfortunatamente non esiste un supporto per l'abbinamento di caratteri jolly/pattern, quindi per eseguire tutti i casi che iniziano con una determinata stringa (presumo che si tratti di "esecuzione dei test in un'intera classe"), è necessario creare script (batch di Windows/bash/perl/qualunque) che chiama:

myTests.exe -functions 

analizza i risultati ed esegue test selezionati utilizzando la prima sintassi.

Per eseguire tutti i casi, semplicemente non passare qualsiasi parametro:

myTests.exe 
+0

Forse miglioreranno la funzionalità in una versione futura .... –

1

Le tre caratteristiche richieste dal PO, sono oggi integrati dentro al Qt Creator.

Il progetto verrà automaticamente scansionato per i test e verranno visualizzati nel riquadro Test. sinistra in basso nella schermata:

Qt Creator screenshot

Ogni prova e dati corrispondenti possono essere abilitati clic sulla casella. Il menu di scelta rapida consente di eseguire tutti i test, tutti i test di una classe, solo il test selezionato o solo uno. Come richiesto.

I risultati del test saranno disponibili anche da Qt Creator. Un indicatore di colore mostrerà pass/fail per ogni test, insieme ad ulteriori informazioni come i messaggi di debug.

In combinazione con Qt Creator, l'uso della macro QTEST_MAIN per ogni caso di test funziona correttamente, poiché ogni eseguibile compilato viene richiamato automaticamente da Qt Creator.

Per una panoramica più dettagliata, fare riferimento alla sezione Running Autotests del manuale Qt Creator.