Russian Qt Forum
Ноябрь 28, 2024, 06:13 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3]   Вниз
  Печать  
Автор Тема: [Решено] Разработка ПО на Qt через тестирование (Test-Driven Development)  (Прочитано 19324 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #30 : Февраль 12, 2014, 17:54 »

Мне нужно проработать этот список вопросов, который прислали с будущей работы:
Мда, грустно  Плачущий Понял, умолкаю
Записан
8Observer8
Гость
« Ответ #31 : Февраль 13, 2014, 10:59 »

Вижу я дал мало информации. Опишу проблему подробнее.

Я создал проект с диалоговым окном (с формой). Расположил на форме элементы и в обработчиках кнопок реализовал соответствующий функционал:



Теперь хочу протестировать. Для этого создал ещё один проект так:

- в разделе "Projects" выбрал "Other Project" -> во второй колонке выбрал "Qt Unit Test"

Теперь у меня в одной директории две папки:

QtCalculator
TestGuiQtCalculator

Я взял пример из Qt, где тестируется GUI приложение:

Код:
#include <QtWidgets>
#include <QtTest/QtTest>

//! [0]
class TestGui: public QObject
{
    Q_OBJECT

private slots:
    void testGui_data();
    void testGui();
};
//! [0]

//! [1]
void TestGui::testGui_data()
{
    QTest::addColumn<QTestEventList>("events");
    QTest::addColumn<QString>("expected");

    QTestEventList list1;
    list1.addKeyClick('a');
    QTest::newRow("char") << list1 << "a";

    QTestEventList list2;
    list2.addKeyClick('a');
    list2.addKeyClick(Qt::Key_Backspace);
    QTest::newRow("there and back again") << list2 << "";
}
//! [1]

//! [2]
void TestGui::testGui()
{
    QFETCH(QTestEventList, events);
    QFETCH(QString, expected);

    QLineEdit lineEdit;

    events.simulate(&lineEdit);

    QCOMPARE(lineEdit.text(), expected);
}
//! [2]

//! [3]
QTEST_MAIN(TestGui)
#include "testgui.moc"
//! [3]


Здесь создаётся список событий и этот список применяется к элементу QLineEdit

У меня таких QLineEdit три штуки. Я тоже хочу применить список событий к ним и к кнопке. К первым двум события: нажатия клавиш с цифрами, а к кнопкам клик мыши

Проблема в том, что я не могу получить доступ к моим QLineEdit и QPushButton.

Мне нужно подключить класс Dialog. Но как это сделать. Вот как я попытался:

- открыл файл TestGuiQtCalculator.pro и добавил в него:
Код:
INCLUDEPATH += "../QtCalculator/"
INCLUDEPATH += ../build-QtCalculator-Desktop_Qt_5_2_0_MinGW_32bit-Debug/
SOURCES += tst_testguiqtcalculatortest.cpp ../QtCalculator/dialog.cpp
- открыл файл tst_testguiqtcalculatortest.cpp и добавил в него:
Код:
#include "../QtCalculator/dialog.h"
#include "../build-QtCalculator-Desktop_Qt_5_2_0_MinGW_32bit-Debug/ui_dialog.h"

Запускаю. Выдаётся ошибка:
Цитировать
D:\Documents\Qt\QtExamples\0094_QtCalculator\QtCalculator\dialog.cpp:8: error: undefined reference to `vtable for Dialog'

QtCalculator: https://github.com/8Observer8/QtCalculator
TestGuiQtCalculator: https://github.com/8Observer8/TestGuiQtCalculator

Очень нужна помощь! Пожалуйста, помогите!
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #32 : Февраль 13, 2014, 12:24 »

HEADERS += ../QtCalculator/dialog.h
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
8Observer8
Гость
« Ответ #33 : Февраль 13, 2014, 12:51 »

HEADERS += ../QtCalculator/dialog.h

Огромное тебе спасибо, добрый человек Улыбающийся

Код:
#-------------------------------------------------
#
# Project created by QtCreator 2014-02-12T12:21:00
#
#-------------------------------------------------

QT       += testlib widgets

QT       -= gui

TARGET = tst_testguiqtcalculatortest
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


INCLUDEPATH += "../QtCalculator/"
INCLUDEPATH += ../build-QtCalculator-Desktop_Qt_5_2_0_MinGW_32bit-Debug/
HEADERS += ../QtCalculator/dialog.h
SOURCES += tst_testguiqtcalculatortest.cpp ../QtCalculator/dialog.cpp ../QtCalculator/calculator.cpp
DEFINES += SRCDIR=\\\"$$PWD/\\\"
Записан
8Observer8
Гость
« Ответ #34 : Апрель 07, 2014, 11:58 »

Я оформил хороший пример по этой теме. См. первое сообщение по следующей ссылке; пример называется "Пример разработки ПО через тестирование" (это в конце инструкции): http://www.prog.org.ru/topic_26413_0.html
Записан
8Observer8
Гость
« Ответ #35 : Апрель 30, 2014, 06:52 »

Фреймворк QTest не поддерживает ни тестирование исключений, ни сравнение вещественных результатов, ни Mock-объектов. Здесь инструкция по самому продвинутому TDD-фреймворку на C++ - http://www.prog.org.ru/topic_26944_0.html
Записан
8Observer8
Гость
« Ответ #36 : Июнь 26, 2014, 09:01 »

В шапку темы добавил текст:

Внимание! Эта тема перетекла, в следующую тему, в шапку которой я буду добавлять изменения/добавления. Вам достаточно будет подписаться на неё. О всех измененияx/добавленияx я буду извещать: http://www.prog.org.ru/topic_26944_0.html
Записан
Страниц: 1 2 [3]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.117 секунд. Запросов: 23.