Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania i odpowiedzi
Viewing all articles
Browse latest Browse all 83220

C++ Qt - Testy jednostkowe (QtTest), jest dziwny błąd!

$
0
0

Witam! Utworzyłem projekt w Qt Creator, w którym są dwa podprojekty. Jeden to zwykły projekt do tworzenia aplikacji okienkowych a w drugim znajdują się testy. Problem polega na tym, że nie wiem jak to skonfigurować, aby projekt z testami kompilował aplikację konsolową, która wyświetla wynik testów, wykonanych na rzeczach z drugiego podprojektu. Jestem teraz w takiej sytuacji, że projekt z aplikacją okienkową kompiluje się dobrze, a projekt z testami pokazuje błąd, że nie może otworzyć pliku "ui_mainwindow.h" z drugiego projektu.

Oto struktura projektu:

zawartość pliku DoUsuniecia123.pro:

TEMPLATE = subdirs

SUBDIRS += \
    MCapp \
    TestyDoUsuniecia

plik MCapp.pro:

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

DEFINES += QT_DEPRECATED_WARNINGS


SOURCES += \
    main.cpp \
    mainwindow.cpp

HEADERS += \
    mainwindow.h

FORMS += \
    mainwindow.ui

qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

plik TestyDoUsuniecia.pro:

QT += testlib
QT += gui
QT += core gui
QT += widgets
greaterThan(QT_MAJOR_VERSION, X): QT += widgets
CONFIG += qt warn_on depend_includepath testcase

TEMPLATE = app

INCLUDEPATH += \
    ../MCapp

SOURCES +=  \
    tst_testdodelete.cpp \
    ../MCapp/mainwindow.cpp \

HEADERS += \
    ../MCapp/mainwindow.h

plik z którym są testy:

#include <QtTest>
#include <QCoreApplication>

#include "mainwindow.h"

class TestDoDelete : public QObject
{
    Q_OBJECT

public:
    TestDoDelete();
    ~TestDoDelete();

private slots:
    void test_case1();

};

TestDoDelete::TestDoDelete()
{

}

TestDoDelete::~TestDoDelete()
{

}

void TestDoDelete::test_case1()
{
    MainWindow window;

    int result = window.Add(2, 2);

    QVERIFY(result == 4);
}

QTEST_MAIN(TestDoDelete)

#include "tst_testdodelete.moc"

mainwindow.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    int Add(int a, int b);

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

plik w którym pokazuje błąd (mainwindow.cpp):

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

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

Z góry dziękuje za pomoc!


Viewing all articles
Browse latest Browse all 83220

Trending Articles


Sprawdź z którą postacią z anime dzielisz urodziny


MDM - Muzyka Dla Miasta (2009)


Częstotliwość 3.722MHz


POSZUKIWANY TOMASZ SKOWRON-ANGLIA


Ciasto 3 Bit


Kasowanie inspekcji Hyundai ix35


Steel Division 2 SPOLSZCZENIE


SZCZOTKOWANIE TWARZY NA SUCHO


Potrzebuje schemat budowy silnika YX140


Musierowicz Małgorzata - Kwiat kalafiora [audiobook PL]