¿Alguien me puede dar un ejemplo de código de prueba de QT y CMakeLists.txt que compila con Cmake y se ejecutó con CTest? ¡No puedo encontrar ninguno!Generar pruebas de Qt con CMake
-Kurtis
¿Alguien me puede dar un ejemplo de código de prueba de QT y CMakeLists.txt que compila con Cmake y se ejecutó con CTest? ¡No puedo encontrar ninguno!Generar pruebas de Qt con CMake
-Kurtis
Un ejemplo tomado de Charm (Pruebas/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)
La única diferencia a un ejecutable normal es que llame ADD_TEST macro. Eche un vistazo a, por ejemplo, Encanto para verlo en acción.
Aquí hay un ejemplo del uso de cmake 2.8.11 y Qt5.2. Tenga en cuenta que cmake ahora admite archivos de prueba con .moc-include en la parte inferior.
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 para usar con qt5. –
Tuve que editar la última línea de CMakeList para compilar el código: target_link_libraries (foo Qt5 :: Widgets Qt5 :: Test). +1 para qt5. No estoy seguro si soy yo, o de hecho es un error, así que no estoy editando la respuesta. – cauchy
@cauchy: bueno, por supuesto, si su prueba requiere QtWidgets, debe estar vinculada en ...: P – Smar
perfectas. Increíble. Gracias un montón. –
Esperemos que esto le ahorre a alguien en algún momento más adelante, de acuerdo con [esta página] (http://qt-project.org/wiki/Writing_Unit_Tests): "Tenga en cuenta que CMake no puede manejar archivos qtest con un moc include en el fondo." –
Si ese es el caso, también debe recordar automatizar sus archivos de prueba. – jackyalcine