n
npukoluct2 февраля 2020 г. 12:15

QTest как протестировать MainWindow

QTest, c++, Qt

Решил разобраться с QTest. Создал простейший проект (FirstTest) с подпроектами: 1 подпроект (FirstProject) - простейшая прога, 2 подпроект (test) - для тестирования. Но при компиляции получаю ошибку: \firstproject\mainwindow.cpp:2: ошибка: ui_mainwindow.h: No such file or directory.
Подскажите, что я делаю не так, а то какой-то осмысленной информации по QTest мало, но хочется в этом разобраться.

FirstTest.rar FirstTest.rar

TEMPLATE = subdirs

SUBDIRS += \
    Test/Test.pro \
    firstproject/firstproject.pro

В FirstProject *.pro файл не менял.
В MainWindows добавил 1 функции для тестирования:

int MainWindow::addNumber(int a, int b)
{
    return a+b;
}

В Test.pro вписал следующее:

QT += testlib
QT += gui
QT += widgets

CONFIG += qt warn_on depend_includepath testcase

TEMPLATE = app

HEADERS += \
    ../firstproject/mainwindow.h
SOURCES += \
    ../firstproject/mainwindow.cpp
    tst_test_mainwindow.cpp

В классе теста написал следующее:

#include <QtTest>
#include <QCoreApplication>

// add necessary includes here
#include "../firstproject/mainwindow.h"

Q_DECLARE_METATYPE(MainWindow)

class Test_MainWindow : public QObject
{
    Q_OBJECT

public:
    Test_MainWindow();
    ~Test_MainWindow();

private slots:
    void initTestCase();
    void cleanupTestCase();
    void test_case1();

};

Test_MainWindow::Test_MainWindow()
{

}

Test_MainWindow::~Test_MainWindow()
{

}

void Test_MainWindow::initTestCase()
{

}

void Test_MainWindow::cleanupTestCase()
{

}

void Test_MainWindow::test_case1()
{
    MainWindow *mw = new MainWindow(nullptr);
    QCOMPARE(mw->addNumber(2, 4), 6);
}

QTEST_MAIN(Test_MainWindow)

#include "tst_test_mainwindow.moc"
Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

2
o
  • 2 февраля 2020 г. 14:09
  • Ответ был помечен как решение.

В проекте с тестами не видно упоминания ui

    n
    • 2 февраля 2020 г. 14:40

    Спасибо большое.
    Дописал в test.pro, такую строчку:

    FORMS += \
        ../firstproject/mainwindow.ui
    

    убрав из cpp теста Q_DECLARE_METATYPE(MainWindow) и поправив test_case1(),на:

    MainWindow mw;
    QCOMPARE(mw.addNumber(2,4), 6);
    

    Все заработало.

      Комментарии

      Только авторизованные пользователи могут публиковать комментарии.
      Пожалуйста, авторизуйтесь или зарегистрируйтесь
      Г

      C++ - Тест 001. Первая программа и типы данных

      • Результат:66баллов,
      • Очки рейтинга-1
      t

      C++ - Тест 001. Первая программа и типы данных

      • Результат:33баллов,
      • Очки рейтинга-10
      t

      Qt - Тест 001. Сигналы и слоты

      • Результат:52баллов,
      • Очки рейтинга-4
      Последние комментарии
      G
      GoattRock3 сентября 2024 г. 13:50
      Как Копировать Файлы в Linux Задумывались когда-нибудь о том, как мы привыкли доверять свои вещи службам грузоперевозок? Сейчас такие услуги стали неотъемлемой частью нашей жизни, особенно когда речь идет о переездах между …
      ВР
      Влад Русоков2 августа 2024 г. 1:47
      Как Копировать Файлы в Linux Screenshot_20240802-065123.png
      d
      dblas55 июля 2024 г. 11:02
      QML - Урок 016. База данных SQLite и работа с ней в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
      k
      kmssr8 февраля 2024 г. 18:43
      Qt Linux - Урок 001. Автозапуск Qt приложения под Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
      АК
      Анатолий Кононенко5 февраля 2024 г. 1:50
      Qt WinAPI - Урок 007. Работаем с ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
      Сейчас обсуждают на форуме
      Evgenii Legotckoi
      Evgenii Legotckoi24 июня 2024 г. 15:11
      добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
      F
      Fynjy22 июля 2024 г. 4:15
      при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …
      BlinCT
      BlinCT25 июня 2024 г. 1:00
      Нарисовать кривую в qml Всем привет. Имеется Лист листов с тосками, точки получаны интерполяцией Лагранжа. Вопрос, как этими точками нарисовать кривую? ChartView отпадает сразу, в qt6.7 появился новый элемент…
      BlinCT
      BlinCT5 мая 2024 г. 5:46
      Написать свой GraphsView Всем привет. В Qt есть давольно старый обьект дял работы с графиками ChartsView и есть в 6.7 новый но очень сырой и со слабым функционалом GraphsView. По этой причине я хочу написать х…
      Evgenii Legotckoi
      Evgenii Legotckoi2 мая 2024 г. 14:07
      Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Добрый день. По моему мнению - да, но то, что будет касаться вызовов к функционалу Андроида, может создать огромные трудности.

      Следите за нами в социальных сетях