Wie führe ich mehrere QTest-Klassen aus?

Ich habe ein Unterprojekt, in dem ich alle meineQTest unit testet und erstellt eine eigenständige Testanwendung, mit der die Tests ausgeführt werden (d. h. ich führe sie in Qt Creator aus). Ich habe mehrere Testklassen, die ich mit @ ausführen kaqExec(). Ich weiß jedoch nicht, wie mehrere Testklassen ordnungsgemäß ausgeführt werden können.

Zur Zeit mache ich das so (MVCE):

tests.pro
QT -= gui
QT += core \
    testlib

CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
TARGET = testrunner

HEADERS += test_foo.h
SOURCES += main.cpp
main.cpp
#include <QtTest>
#include <QCoreApplication>
#include "test_foo.h"

int main(int argc, char** argv) {
    QCoreApplication app(argc, argv);

    TestFooClass testFoo;
    TestBarClass testBar;
    // NOTE THIS LINE IN PARTICULAR.
    return QTest::qExec(&testFoo, argc, argv) || QTest::qExec(&testBar, argc, argv);
}
test_foo.h
#include <QtTest>

class TestFooClass: public QObject
{
    Q_OBJECT
private slots:
    void test_func_foo() {};
};

class TestBarClass: public QObject
{
    Q_OBJECT
private slots:
    void test_func_bar() {};
};

Jedoch dasDokumentation fürqExec() sagt das ist der falsche Weg:

Für eigenständige Testanwendungen sollte diese Funktion nur einmal aufgerufen werden, da die Befehlszeilenoptionen zum Protokollieren der Testausgabe in Dateien und zum Ausführen einzelner Testfunktionen nicht ordnungsgemäß funktionieren.

er andere große Nachteil ist, dass eskeine einzige Zusammenfassung für alle Testklassen, nur für einzelne Klassen. Dies ist ein Problem, wenn ich Dutzende von Klassen mit jeweils Dutzenden von Tests habe. Um zu überprüfen, ob alle Tests bestanden wurden, muss ich nach oben scrollen, um alle "Summen" der bestandenen / nicht bestanden Klassen zu sehen,

********* Start testing of TestFooClass *********
PASS   : TestFooClass::initTestCase()
PASS   : TestFooClass::test_func_foo()
PASS   : TestFooClass::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of TestFooClass *********
********* Start testing of TestBarClass *********
PASS   : TestBarClass::initTestCase()
PASS   : TestBarClass::test_func_bar()
PASS   : TestBarClass::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of TestBarClass *********

Ich bin auch überrascht meinqExec() || qExec() funktioniert, wenn man bedenkt, dass dasDokumentatio sagt, wenn ein Test fehlgeschlagen istqExec() gibt einen Wert ungleich Null zurück, was bedeuten sollte, dass alle folgendenqExec() Anrufe würden nicht passieren, aber dies scheint nicht der Fall zu sein.

Was ist der richtige Weg, um mehrere Testklassen auszuführen? Und damit ich auf einen Blick sehe, ob einer der Hunderte von Unit-Tests, die ich nicht bestanden habe, erfolgreich war.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage