Domanda

Sto sviluppando un'applicazione GUI in QT Creator e voglio scrivere alcuni test unitari per questo.

Ho seguito Questa guida Per effettuare alcuni test unitari con QTTESTLIB e il programma compila bene. Ma come li gestisco? Vorrei che fossero eseguiti prima che l'app GUI inizi se il debug buid e non eseguiva se il rilascio di rilascio.

È stato utile?

Soluzione 3

finalmente capito come eseguire i test prima di iniziare l'applicazione.

ho aggiunto un metodo statico nella classe test per eseguire i test:

#include <QtTest/QtTest>

TestClass::runTests()
{
    TestClass * test = new TestClass();

    QTest::qExec(test);
    delete test;
}

Nella funzione principale, fare:

int main(int argv, char *args[])
{
    ::TestsClas::runTests();

    QApplication app(argv, args);
    MainWindow mainWindow;
    mainWindow.setGeometry(100, 100, 800, 500);
    mainWindow.show();

    return app.exec();
}

I risultati del test sono stampate nella finestra di output dell'applicazione.

Altri suggerimenti

Non inserire il codice di prova nel progetto principale. Si dovrebbe creare un progetto separato per il test di unità quindi creare ed eseguire questo. Non modificare il progetto principale per eseguire i test.

Idealmente, si dovrebbe avere un build server set up che verrà automaticamente invoke progetto test di unità e costruire i rilasci. È possibile creare script questo.

Non incidere l'applicazione principale per eseguire il test di unità. Se avete bisogno di fare test di livello di integrazione (vale a dire il test come funziona il programma una volta che è completamente compilato e integrata) è necessario utilizzare un framework di integrazione test diverso che permette di testare il programma da una fonte script esterno. di FrogLogic Squish è un tale quadro.

Usa bersagli multipli e bandiere del preprocessore per raggiungere questo obiettivo:

int main(int argv, char *args[])
{
#ifdef TEST
    ::TestsClas::runTests();
#endif
    QApplication app(argv, args);
    MainWindow mainWindow;
    mainWindow.setGeometry(100, 100, 800, 500);
    mainWindow.show();

    return app.exec();
}

Poi vai nel pannello progetti e aggiungere un nuovo obiettivo "Test" duplicando "Debug". Sotto istruzioni di generazione, aggiungere un argomento per fare questo è

CXXFLAGS+=-DTEST

In questo modo il test è incluso nel target di prova, ma non gli obiettivi di debug o di uscita.

Qt Creator non ancora esplicitamente supporta l'esecuzione di test di unità in questo momento (fino a Qt Creator 2.0beta). Così, per il momento è necessario per avviare i test manualmente.

Se si utilizza un sistema di compilazione CMake come invece di qmake allora si potrebbe tentare di eseguire automaticamente i test di unità, come parte del processo di generazione in sé. Purtroppo non sono a conoscenza di alcun metodo per fare questo con qmake. CMake è supportata da Qt Creator, anche se non così come qmake.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top