Qualcuno può darmi un esempio di alcuni codici di test QT e un CMakeLists.txt che compilano con Cmake e sono in esecuzione con CTest. Non riesco a trovare nessuno!Creare test Qt con CMake
-Kurtis
Qualcuno può darmi un esempio di alcuni codici di test QT e un CMakeLists.txt che compilano con Cmake e sono in esecuzione con CTest. Non riesco a trovare nessuno!Creare test Qt con CMake
-Kurtis
un esempio tratto dalla Charm (Test/CMakeLists.txt):
SET(TestApplication_SRCS TestApplication.cpp)
SET(TEST_LIBRARIES CharmCore ${QT_QTTEST_LIBRARY} ${QT_LIBRARIES})
SET(SqLiteStorageTests_SRCS SqLiteStorageTests.cpp)
QT4_AUTOMOC(${SqLiteStorageTests_SRCS})
ADD_EXECUTABLE(SqLiteStorageTests ${SqLiteStorageTests_SRCS})
TARGET_LINK_LIBRARIES(SqLiteStorageTests ${TEST_LIBRARIES})
ADD_TEST(NAME SqLiteStorageTests COMMAND SqLiteStorageTests)
L'unica differenza ad un eseguibile normale è che si chiami ADD_TEST macro. Dai un'occhiata ad es. Fascino vederlo in azione.
Ecco un esempio di utilizzo di cmake 2.8.11 e Qt5.2. Nota che cmake ora supporta i file di prova con un .moc-include in basso.
CMakeLists.txt:
cmake_minimum_required(VERSION 2.8.11)
project(foo)
enable_testing()
# Tell CMake to run moc when necessary:
set(CMAKE_AUTOMOC ON)
# As moc files are generated in the binary dir, tell CMake
# to always look for includes there:
set(CMAKE_INCLUDE_CURRENT_DIR ON)
find_package(Qt5Test REQUIRED)
add_executable(foo foo.cpp)
add_test(foo foo)
target_link_libraries(foo Qt5::Test)
foo.cpp:
#include <QTest>
class Foo : public QObject {
Q_OBJECT
private slots:
void t1() { QVERIFY(true); }
};
QTEST_MAIN(Foo)
#include "foo.moc"
+1 per l'utilizzo con qt5. –
Ho dovuto modificare l'ultima riga di CMakeList per compilare il codice: target_link_libraries (foo Qt5 :: Widgets Qt5 :: Test). +1 per qt5. Non sono sicuro che sia io, o sia in realtà un errore, quindi non sto modificando la risposta. – cauchy
@cauchy: beh, ovviamente se il test richiede QtWidgets, deve essere collegato in ...: P – Smar
perfette. Eccezionale. Grazie mille. –
Speriamo che questo salvi qualcuno a un certo punto in fondo alla strada - secondo [questa pagina] (http://qt-project.org/wiki/Writing_Unit_Tests): "Nota che CMake non può gestire i file qtest con un moc include al parte inferiore." –
Se è il caso, dovresti ricordarti di automatizzare anche i tuoi file di test. – jackyalcine