Como executar várias classes QTest?

Eu tenho um subprojeto onde coloquei todo o meuQTest testes de unidade e crie um aplicativo de teste autônomo que execute os testes (ou seja, eu o executo no Qt Creator). Tenho várias classes de teste com as quais posso executarqExec(). No entanto, não sei qual é a maneira correta de executar várias classes de teste.

Atualmente, faço desta maneira (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() {};
};

No entanto, odocumentação paraqExec() diz que esta é a maneira errada:

Para aplicativos de teste independentes, essa função não deve ser chamada mais de uma vez, pois as opções da linha de comandos para registrar a saída de teste em arquivos e executar funções de teste individuais não se comportarão corretamente.

A outra grande desvantagem é que hánenhum resumo único para todas as classes de teste, apenas para classes individuais. Isso é um problema quando eu tenho dezenas de classes, cada uma com dezenas de testes. Para verificar se todos os testes foram aprovados, tenho que rolar para cima para ver todos os "totais" do que foi aprovado / reprovado em cada classe, por exemplo:

********* 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 *********

Eu também estou surpreso meuqExec() || qExec() trabalha considerando que odocumentação diz se um teste falhouqExec() retorna um valor diferente de zero, o que significa todos os seguintesqExec() as chamadas não aconteceriam, mas esse parece não ser o caso.

Qual é a maneira correta de executar várias classes de teste? E para que eu possa ver rapidamente se alguma das centenas de testes de unidade que eu falhei.

questionAnswers(1)

yourAnswerToTheQuestion