C++ 如何为测试用例编写qmake文件?
我只是不明白Qt项目的总体布局是什么,包括一个程序和一个测试 QTest教程的项目只有测试程序,但我的项目已经有另一个程序。如果我添加测试用例,它会声明“main()的多个定义”,因为QTEST_main实际上是另一个main() 另外,我在测试类中得到了“对vtable的未定义引用”,不知道为什么 我正在使用Qt5.2.1 这是我的项目文件:C++ 如何为测试用例编写qmake文件?,c++,qt,qmake,qtestlib,C++,Qt,Qmake,Qtestlib,我只是不明白Qt项目的总体布局是什么,包括一个程序和一个测试 QTest教程的项目只有测试程序,但我的项目已经有另一个程序。如果我添加测试用例,它会声明“main()的多个定义”,因为QTEST_main实际上是另一个main() 另外,我在测试类中得到了“对vtable的未定义引用”,不知道为什么 我正在使用Qt5.2.1 这是我的项目文件: #------------------------------------------------- # # Project created by Qt
#-------------------------------------------------
#
# 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);
#包括
#包括
#包括“距离h”
#包括“diseasepackage.h”
类TestDistance:公共QObject
{
Q_对象
公众:
虚拟~TestDistance();
专用插槽:
void jensen_shannon();
};
TestDistance::~TestDistance(){}
void TestDistance::jensen_shannon()
{
DiseasePackage包装(“CRC.zip”);
}
QTEST_MAIN(测试距离);
使其正常工作的一种方法(我在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 >
QT+=核心gui QT3支持xml脚本
TARGET=simui
模板=应用程序
SOURCES+=main.cpp\
表格+=\
<表单文件>
测试程序的.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 >
QT+=核心gui QT3支持xml脚本
CONFIG+=qtestlib
TARGET=testsimui
模板=应用程序
来源+=\
<所有源构成主程序(main.cpp除外!)>
<所有测试代码源。>
标题+=\
<主程序中的所有标题>
<所有测试代码头>
表格+=\
<主程序中的所有表单>
这不一定是最好的设置,但它确实工作得很好,尽管您最终不得不将每个源文件都添加到这两个.pro文件中
至于你的vtable问题,我认为你提供的信息不足以说明问题。哪个班有问题?另外,我很好奇为什么您的测试类上有一个空的析构函数。也许,我的答案会对您有所帮助。如果是这样,那么它是重复的。vtable问题是由于项目没有使用mro预处理“.cpp”文件造成的。所以有一些未实现的方法,应该在mro生成的源代码中。