如何使用 Qt Test 模块来测试我自己的应用程序?
How to use Qt Test module to test my own application?
我有一个简单的控制台应用程序,如下所示,我想学习如何使用 Qt Test 来测试它的功能。老实说,我正在努力学习如何使用 Qt 测试模块。
MyApplication.pro
QT -= gui
CONFIG += c++11 console
CONFIG -= app_bundle
DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += \
main.cpp \
pen.cpp \
HEADERS += \
pen.h
main.cpp
#include <QCoreApplication>
#include <QDebug>
#include "pen.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Pen* p = new Pen();
p->setValue(5);
qDebug() << "Value of the pen is" << p->getValue();
return a.exec();
}
pen.h
#ifndef PEN_H
#define PEN_H
class Pen
{
public:
Pen();
void setValue(int value);
int getValue();
private:
int value;
};
#endif // PEN_H
pen.cpp
#include "pen.h"
Pen::Pen()
{
value = 0;
}
void Pen::setValue(int value)
{
this->value = value;
}
int Pen::getValue()
{
return value;
}
简单,就是一个简单的应用。
我浏览了有关 Qt 测试模块的 Qt 文档,并找到了以下示例代码以进行 运行 测试。但它在 QString 上测试,Qt 本身是一个 class。
#include <QtTest/QtTest>
class TestQString: public QObject
{
Q_OBJECT
private slots:
void toUpper();
};
void TestQString::toUpper()
{
QString str = "Hello";
QCOMPARE(str.toUpper(), QString("HELLO"));
}
QTEST_MAIN(TestQString)
#include "testqstring.moc"
我的问题是我应该如何使用 Qt Test 来测试我自己的应用程序。
我知道我可以在 QtCreator 中添加一个测试模块作为 Other Projects -> Qt Unit Test 但我不知道如何 link 它与我自己的应用程序.
提前致谢。
首先,创建一个Qt 测试应用程序(TestPen)。由于您想测试 Pen class 的功能,您应该将所需的头文件和源文件添加到测试项目的 .pro 文件(TestPen.pro)中,例如:
SOURCES += ../pen.cpp
HEADERS += ../pen.h
然后您可以在 tst_testpen.cpp 中包含 pen.h 并测试您的 Pen class' 功能,如 TestQString 示例中所示。
对于带有测试的正确项目结构,您可以参考此 link 中接受的答案。
我有一个简单的控制台应用程序,如下所示,我想学习如何使用 Qt Test 来测试它的功能。老实说,我正在努力学习如何使用 Qt 测试模块。
MyApplication.pro
QT -= gui
CONFIG += c++11 console
CONFIG -= app_bundle
DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += \
main.cpp \
pen.cpp \
HEADERS += \
pen.h
main.cpp
#include <QCoreApplication>
#include <QDebug>
#include "pen.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Pen* p = new Pen();
p->setValue(5);
qDebug() << "Value of the pen is" << p->getValue();
return a.exec();
}
pen.h
#ifndef PEN_H
#define PEN_H
class Pen
{
public:
Pen();
void setValue(int value);
int getValue();
private:
int value;
};
#endif // PEN_H
pen.cpp
#include "pen.h"
Pen::Pen()
{
value = 0;
}
void Pen::setValue(int value)
{
this->value = value;
}
int Pen::getValue()
{
return value;
}
简单,就是一个简单的应用。
我浏览了有关 Qt 测试模块的 Qt 文档,并找到了以下示例代码以进行 运行 测试。但它在 QString 上测试,Qt 本身是一个 class。
#include <QtTest/QtTest>
class TestQString: public QObject
{
Q_OBJECT
private slots:
void toUpper();
};
void TestQString::toUpper()
{
QString str = "Hello";
QCOMPARE(str.toUpper(), QString("HELLO"));
}
QTEST_MAIN(TestQString)
#include "testqstring.moc"
我的问题是我应该如何使用 Qt Test 来测试我自己的应用程序。
我知道我可以在 QtCreator 中添加一个测试模块作为 Other Projects -> Qt Unit Test 但我不知道如何 link 它与我自己的应用程序.
提前致谢。
首先,创建一个Qt 测试应用程序(TestPen)。由于您想测试 Pen class 的功能,您应该将所需的头文件和源文件添加到测试项目的 .pro 文件(TestPen.pro)中,例如:
SOURCES += ../pen.cpp
HEADERS += ../pen.h
然后您可以在 tst_testpen.cpp 中包含 pen.h 并测试您的 Pen class' 功能,如 TestQString 示例中所示。
对于带有测试的正确项目结构,您可以参考此 link 中接受的答案。