我需要在Qt中为我的学校项目做一些单元测试,虽然我已经阅读了Qt教程,但我无法弄清楚我应该如何编写这样的测试。我提到的教程中显示的所有测试都是指内置方法。我应该如何为自定义类编写单元测试,说这是我拥有的最简单的类:
任务.h
#ifndef TASK_H
#define TASK_H
#include <QDateTime>
#include <QTime>
class Task
{
private:
bool ifDone;
QString name;
QString description;
QDateTime *startTime;
QTime *start;
QDateTime *endTime;
QTime *end;
bool neededReminder;
QDateTime *reminderTime;
public:
Task(QString _name, QString _description, QDate *dayClicked,
QTime *_startTime, QTime *_endTime, bool reminder);
QString toString();
};
#endif // TASK_H `
任务.cpp
#include "task.h"
Task::Task(QString _name, QString _description, QDate *dayClicked,
QTime *_startTime, QTime *_endTime, bool reminder)
{
ifDone = 0;
name = _name;
description = _description;
start = _startTime;
end = _endTime;
startTime = new QDateTime(*dayClicked, *start);
endTime = new QDateTime(*dayClicked, *end);
neededReminder = reminder;
}
QString Task::toString() {
QString task;
task.append(this->name);
task.append(" ");
task.append(this->start->toString("HH:mm"));
task.append(" - ");
task.append(this->end->toString("HH:mm"));
return task;
}
我试图将这个类 #include 到测试类,并将.h和.cpp文件添加到项目中,但我什么也没做。任何人都可以为上面的类编写一些示例测试方法(用于 toString 方法和构造函数),以便我可以继续其余的工作。提前谢谢。
说实话,我认为这个问题应该结束,你应该开始阅读一些你得到的书。另外,我看不出这里有什么要测试的,也许是字符串的结果?但是,看看这是否有助于您:
UnitTests.pro
QT += testlib
QT -= gui
TARGET = tst_unitteststest
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += tst_unitteststest.cpp task.cpp
DEFINES += SRCDIR=\"$$PWD/\"
HEADERS += task.h
tst_unitteststest.cpp
#include <QString>
#include <QtTest>
#include "task.h"
class UnitTestsTest : public QObject
{
Q_OBJECT
public:
UnitTestsTest();
private Q_SLOTS:
void initTestCase();
void cleanupTestCase();
void testCase1();
};
UnitTestsTest::UnitTestsTest()
{
}
void UnitTestsTest::initTestCase()
{
}
void UnitTestsTest::cleanupTestCase()
{
}
void UnitTestsTest::testCase1()
{
QVERIFY2(true, "Failure");
Task t("name", "desc", new QDate(1, 1, 2012), new QTime(0, 0), new QTime(1, 0), false);
QVERIFY(t.toString() == "name 00:00 - 01:00");
}
QTEST_APPLESS_MAIN(UnitTestsTest)
#include "tst_unitteststest.moc"
考虑到这里有内存泄漏...但我不知道你希望你的班级变成什么样子。当然,测试会在这里通过。