2010-04-21 14 views
9

Ich fange gerade an, QTestLib zu verwenden. Ich bin durch die manual und tutorial gegangen. Obwohl ich weiß, wie man Tests erstellt, werde ich einfach nicht herausfinden, wie man diese Tests bequem ausführen kann. Mein Komponententesthintergrund ist NUnit und MSTest. In diesen Umgebungen war es (zumindest mit einer GUI) trivial, zwischen dem Ausführen eines einzelnen Tests oder allen Tests in einer einzelnen Testklasse oder allen Tests im gesamten Projekt zu wechseln, indem einfach auf die rechte Schaltfläche geklickt wurde.Unit Testing in QTestLib - Ausführen einzelner Tests/Tests in Klasse/alle Tests

Alles, was ich in QTestLib sehe, ist entweder Sie verwenden das QTEST_MAIN Makro, um die Tests in einer einzigen Klasse auszuführen, dann kompilieren und testen jede Datei separat; oder verwenden Sie QTest::qExec() in main(), um zu ermitteln, welche Objekte getestet werden sollen, und ändern Sie sie manuell, und kompilieren Sie sie erneut, wenn Sie Testklassen hinzufügen/entfernen möchten.

Ich bin sicher, dass ich etwas vermisse. Ich möchte in der Lage sein leicht:

  • Run einen einzigen Testmethode
  • Führen Sie die Tests in einer ganzen Klasse
  • Run alle Tests

Jede dieser würde rufen Sie die entsprechende Setup/Teardown Funktionen.

EDIT: Bounty jetzt verfügbar. Es muss einen besseren Weg geben, oder ein GUI-Test-Runner, der es für Sie oder etwas handhabt. Wenn Sie QtTest in einer testgesteuerten Umgebung verwenden, lassen Sie mich wissen, was für Sie funktioniert. (Skripte, Testläufer, etc.)

+0

Sie sollten sich ansehen: http://stackoverflow.com/questions/9944507/how-to-compose-all-qlttestlib-unit-tests-results-in-a-single-file-while-using-using-in- a/10165709 # 10165709 – muenalan

Antwort

5

Sie können, indem Testnamen als command line arguments nur ausgewählte Testfälle (Testmethoden) laufen:

myTests.exe myCaseOne myCaseTwo 

Es wird auch alle inits/Bereinigungen führen. Leider gibt es keine Unterstützung für Wildcards/Mustervergleiche. Um also alle Fälle beginnend mit der angegebenen Zeichenfolge auszuführen (ich nehme an, dass Sie das unter "Tests in einer ganzen Klasse ausführen" verstehen), müssten Sie ein Skript erstellen (Windows Batch/bash/perl/was auch immer):

analysiert die Ergebnisse und führt ausgewählte Tests mit der ersten Syntax aus.

alle Fälle ausführen zu können, nur passieren keinen Parameter:

myTests.exe 
+0

Vielleicht werden sie die Funktionalität in einer zukünftigen Version verbessern .... –

1

Die drei von der OP gewünschten Funktionen werden dem Qt Creator heute integriert in.

Das Projekt wird automatisch nach Tests gescannt und im Testbereich angezeigt. Unten links im Screenshot:

Qt Creator screenshot

Jeder Test und die entsprechenden Daten können durch Klicken auf die Checkbox aktiviert werden. Das Kontextmenü erlaubt es, alle Tests, alle Tests einer Klasse, nur den ausgewählten oder nur einen Test durchzuführen. Wie angefordert.

Die Testergebnisse werden auch vom Qt Creator zur Verfügung gestellt. Ein Farbindikator zeigt für jeden Test "bestanden/nicht bestanden" an, zusammen mit zusätzlichen Informationen wie Debug-Meldungen.

In Kombination mit dem Qt Creator funktioniert die Verwendung des Makros QTEST_MAIN für jeden Testfall gut, da jede kompilierte ausführbare Datei vom Qt Creator automatisch aufgerufen wird.

Für eine detailliertere Übersicht finden Sie im Running Autotests Abschnitt des Handbuchs Qt Creator.