2015-09-06 5 views
0

У меня есть одно очень плохое кодированное GUI-приложение с классом Tools(). И я хочу тестировать другой класс Tree() в том же файле с модульными тестами.qt unit test 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 parsing).

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 item no такой файл или каталог» появился. Я ищу в stackoverflow и find http://stackoverflow.com/questions/16791844/error-qt-5-0-qtreewidget-include-not-found В нем говорится: Добавить к вам .pro файл QT + = widgets – gek0n

ответ

0

Цель состоит в том, чтобы добавить TREE_TEST.cpp #include <QTreeWidgetItem>. А потом добавить к TREE_TEST.pro QT += widgets

Я нашел ответ there и с помощью @Chernobyl

P.S. Если вы хотите правильно начать тесты, вам нужно добавить все заголовки и источники тестируемого проекта в файл TEST.pro. Это необходимо из файлов moc_ *. Я пытался найти это решение в течение длительного времени.