首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用QTestLib测试我的类

使用QTestLib测试我的类
EN

Stack Overflow用户
提问于 2012-12-13 01:18:54
回答 1查看 2.1K关注 0票数 1

我需要在Qt中为我的学校项目做一些单元测试,尽管我已经阅读了Qt教程,但我不知道我应该如何编写这样的测试。我提到的教程中显示的所有测试都引用了内置方法。我应该如何为自定义类编写单元测试,比如这是我拥有的最简单的类:

task.h

代码语言:javascript
复制
#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    `

task.cpp

代码语言:javascript
复制
#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;
}

我试图将这个类包含到测试类中,并将.h和.cpp文件添加到项目中,但我什么也没能做到。有没有人可以为上面的类写一些样本测试方法(用于toString方法和构造函数),这样我就可以继续其他的工作了。提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-13 05:09:34

坦率地说,我认为这个问题应该结束,你应该开始阅读一些你已经提供的书籍。另外,我看不出这里有什么可以测试的,也许是字符串的结果?但是,看看这是否对您有帮助:

UnitTests.pro

代码语言:javascript
复制
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

代码语言:javascript
复制
#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"

考虑到这里有mem泄漏...但我不知道你想让你的班级变成什么样。当然,测试会在这里通过。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13845144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档