Может ли кто-нибудь дать мне пример некоторого тестового кода QT и файла CMakeLists.txt, который будет построен с Cmake и запущен с CTest. Кажется, я не могу найти!Build Qt Tests with CMake
-Kurtis
Может ли кто-нибудь дать мне пример некоторого тестового кода QT и файла CMakeLists.txt, который будет построен с Cmake и запущен с CTest. Кажется, я не могу найти!Build Qt Tests with CMake
-Kurtis
Пример из Charm (Tests/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)
Единственное отличие в нормальный исполняемый файл является то, что вы называете ADD_TEST макросъемки. Посмотрите, например. Очарование, чтобы увидеть его в действии.
Ниже приведен пример использования cmake 2.8.11 и Qt5.2. Обратите внимание, что cmake теперь поддерживает тестовые файлы с .moc-include внизу.
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 для использования с qt5. –
Мне пришлось отредактировать последнюю строку CMakeList для компиляции кода: target_link_libraries (foo Qt5 :: Widgets Qt5 :: Test). +1 для qt5. Я не уверен, что это я, или на самом деле ошибка, поэтому я не редактирую ответ. – cauchy
@cauchy: ну, конечно, если ваш тест требует QtWidgets, его нужно связать в ...: P – Smar
Совершенные. Потрясающие. Огромное спасибо. –
Надеюсь, это сэкономит кому-то еще некоторое время в будущем - согласно [этой странице] (http://qt-project.org/wiki/Writing_Unit_Tests): «Обратите внимание, что CMake не может обрабатывать файлы qtest с помощью moc include на дно." –
Если это так, вам придется не забывать автоматизировать ваши тестовые файлы. – jackyalcine