qt 单元测试 QTreeWidgetItem 尚未声明
qt unit test QTreeWidgetItem has not been declared
我有一个带有 class Tools() 的编码非常糟糕的 gui 应用程序。我想用单元测试在同一文件中测试其他 class Tree()。
我已经编写了简单的空树 class 来尝试单元测试。
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个错误。
我不知道为什么它没有编译,但我猜是一些定义并包含错误。
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。我的英文不是很好。请多多包涵
目标是 TREE_TEST.cpp #include <QTreeWidgetItem>
。然后添加到TREE_TEST.proQT += widgets
我在@Chernobyl
的帮助下找到了答案 there
P.S。如果你想正确地开始你的测试,你需要在你的 TEST.pro 文件中附加所有被测试项目的头文件和源代码。它需要 moc_* 文件。
我尝试了很长时间才找到这个解决方案。
我有一个带有 class Tools() 的编码非常糟糕的 gui 应用程序。我想用单元测试在同一文件中测试其他 class Tree()。
我已经编写了简单的空树 class 来尝试单元测试。
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个错误。 我不知道为什么它没有编译,但我猜是一些定义并包含错误。
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。我的英文不是很好。请多多包涵
目标是 TREE_TEST.cpp #include <QTreeWidgetItem>
。然后添加到TREE_TEST.proQT += widgets
我在@Chernobyl
的帮助下找到了答案 thereP.S。如果你想正确地开始你的测试,你需要在你的 TEST.pro 文件中附加所有被测试项目的头文件和源代码。它需要 moc_* 文件。 我尝试了很长时间才找到这个解决方案。