Как написать файл qmake для теста?
Я просто не понимаю, какова общая схема проекта Qt с программой и тестом...
В проекте учебника QTest есть только тестовая программа, но в моем проекте уже есть другая программа. Если я добавляю тестовый пример, он заявляет "множественное определение main()", поскольку QTEST_MAIN на самом деле является еще одним main ().
Кроме того, я получил "неопределенную ссылку на vtable" в моем тестовом классе, и не знаю почему..
Я использую Qt 5.2.1
Это мой файл проекта:
#-------------------------------------------------
#
# Project created by QtCreator 2014-06-06T13:42:19
#
#-------------------------------------------------
QT += core gui testlib
CONFIG += testcase
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = GutMiner
TEMPLATE = app
LIBS += -lquazip
SOURCES += main.cpp\
mainwindow.cpp \
dataform.cpp \
datavec.cpp \
distance.cpp \
linereader.cpp \
diseasepackage.cpp \
error.cpp \
newpagedialog.cpp \
resultpage.cpp \
test.cpp
HEADERS += mainwindow.h \
dataform.h \
distance.h \
datavec.h \
linereader.h \
diseasepackage.h \
error.h \
newpagedialog.h \
resultpage.h
FORMS += mainwindow.ui \
dataform.ui \
newpagedialog.ui
и это мой тестовый исходный файл:
#include <QObject>
#include <QTest>
#include "distance.h"
#include "diseasepackage.h"
class TestDistance: public QObject
{
Q_OBJECT
public:
virtual ~TestDistance();
private slots:
void jensen_shannon();
};
TestDistance::~TestDistance() {}
void TestDistance::jensen_shannon()
{
DiseasePackage pkg("CRC.zip");
}
QTEST_MAIN(TestDistance);
1 ответ
Один из способов сделать это правильно (тот, который я использую в Qt 4.8) - это создать отдельный файл.pro для тестовой программы.
Файл.pro основной программы НЕ содержит тестовый код.
QT += core gui qt3support xml script
TARGET = simui
TEMPLATE = app
SOURCES += main.cpp\
<lots of other source files
HEADERS += \
< header files>
FORMS += \
< form files >
Файл.pro тестовой программы НЕ включает main.cpp. Файл.pro тестовых программ содержит библиотеку тестов:
QT += core gui qt3support xml script
CONFIG += qtestlib
TARGET = testsimui
TEMPLATE = app
SOURCES += \
< all the sources form the main program (except main.cpp!) >
< all the test code sources. >
HEADERS += \
< all the headers from the main program >
< all the test code headers>
FORMS += \
< all the forms from the main program >
Это не обязательно лучшая установка, но она работает хорошо, хотя в конечном итоге вам нужно добавить каждый исходный файл в оба.pro-файла.
Что касается вашей проблемы с vtable, я не думаю, что в том, что вы дали, достаточно информации, чтобы что-то из этого сделать. В каком классе возникла проблема? Кроме того, мне любопытно, почему у вас есть пустой деструктор в вашем тестовом классе.