2015-09-06 121 views
0

我有一个非常糟糕的gui应用程序类Tools()。我想用单元测试在同一个文件中测试其他类的Tree()。qt单元测试QTreeWidgetItem尚未声明

我写了简单的空树类来尝试单元测试。

的Tools.h

#ifndef TOOLS_H 
#define TOOLS_H 

#include "json.h" 
#include <QString> 
#include <QList> 
#include <QSettings> 
... 
class Tools 
{ 
public: 
    Tools(); 
    static void createTree(Json::Value parsedJSON, treeElement *Element); 
    static void reloadTree(QTreeWidgetItem *item, treeElement *Element); 
    .... 
    static QMap<QString, QString> Dictionary; 
}; 

class Tree 
{ 
public: 
    Tree(); 

}; 

#endif // TOOLS_H 

大多数代码在由QT自动生成该文件。我只写了isCreatable()。

当测试项目开始时,this erorrs出现了。 我不知道它为什么不编译,但我想一些定义,并包括错误。

TREE_TEST.cpp

#include <QString> 
#include <QtTest> 
#include "tools.h" 

class TreeTest : public QObject 
{ 
    Q_OBJECT 

public: 
    TreeTest(); 

private Q_SLOTS: 
    void isCreatable(); 
}; 

TreeTest::TreeTest() 
{ 
} 

void TreeTest::isCreatable() 
{ 
    Tree *newTree = NULL; 
    QVERIFY2(newTree == NULL, "Can't create empty Tree"); 
    newTree = new Tree(); 
    QVERIFY2(newTree != NULL, "Can't create new instance of Tree"); 
} 

QTEST_APPLESS_MAIN(TreeTest) 

#include "tst_treetest.moc" 

这是我的测试亲文件。我包括测试项目的路径和依赖关系(只是简单的json解析库)。

TREE_TEST.pro

#------------------------------------------------- 
# 
# Project created by QtCreator 2015-09-06T20:42:18 
# 
#------------------------------------------------- 

QT  += testlib gui 

TARGET = tst_treetest 
CONFIG += console 
CONFIG -= app_bundle 

TEMPLATE = app 

INCLUDEPATH += ../../dependencies/json 
INCLUDEPATH += ../../ 


SOURCES += tst_treetest.cpp 
DEFINES += SRCDIR=\\\"$$PWD/\\\" 

请帮助我认识和解决这个烦恼。我不明白,出了什么问题......

P.S.我的英文不是很好。请容忍。

+1

#include ? – Chernobyl

+0

不完全。 当我这样做时,“Qtreewidget项目没有这样的文件或目录”出现了。 我搜索的stackoverflow和找到http://stackoverflow.com/questions/16791844/error-qt-5-0-qtreewidget-include-not-found 它说:添加到你.pro文件QT + =部件 – gek0n

回答

0

目标是添加到TREE_TEST.cpp #include <QTreeWidgetItem>。然后添加到TREE_TEST.pro QT += widgets

我找到答案there与@Chernobyl

帮助

附:如果你想正确开始你的测试,你需要在你的TEST.pro文件中附加所有测试项目的头文件和源代码。它需要moc_ *文件。 我试图找到这个解决方案很长一段时间。