mirror of
https://gitlab.com/ita1024/waf.git
synced 2024-11-22 01:46:15 +01:00
qt5 demo: add example of unit testing using QtTest integrated into waf with standard waf_unit_test Tool
This commit is contained in:
parent
36898e12af
commit
e6eca1eec5
@ -3,7 +3,24 @@
|
|||||||
#include "foo.h"
|
#include "foo.h"
|
||||||
|
|
||||||
Foo::Foo() : QWidget(NULL) {
|
Foo::Foo() : QWidget(NULL) {
|
||||||
|
m_button = new QPushButton("Foo Button", this);
|
||||||
|
m_button->setGeometry(QRect(QPoint(50, 60),
|
||||||
|
QSize(120, 50)));
|
||||||
|
connect(m_button, SIGNAL (released()), this, SLOT (handleButton()));
|
||||||
|
myToggle = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Foo::handleButton() {
|
||||||
|
if (myToggle) {
|
||||||
|
m_button->setText("Button Foo");
|
||||||
|
} else {
|
||||||
|
m_button->setText("Foo Button");
|
||||||
|
}
|
||||||
|
myToggle = !myToggle;
|
||||||
|
}
|
||||||
|
|
||||||
|
int Foo::FortyTwo() {
|
||||||
|
return 42;
|
||||||
}
|
}
|
||||||
|
|
||||||
class Bar_private : public QWidget {
|
class Bar_private : public QWidget {
|
||||||
|
@ -4,13 +4,20 @@
|
|||||||
#define _FOO
|
#define _FOO
|
||||||
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
#include <QPushButton>
|
||||||
|
|
||||||
class Foo : public QWidget {
|
class Foo : public QWidget {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
signals:
|
signals:
|
||||||
void test();
|
void test();
|
||||||
|
private slots:
|
||||||
|
void handleButton();
|
||||||
public:
|
public:
|
||||||
Foo();
|
Foo();
|
||||||
|
int FortyTwo();
|
||||||
|
QPushButton *m_button;
|
||||||
|
public:
|
||||||
|
bool myToggle;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -4,12 +4,13 @@
|
|||||||
//#include <QString>
|
//#include <QString>
|
||||||
//#include "mainwindow.h"
|
//#include "mainwindow.h"
|
||||||
#include "ui_but.h"
|
#include "ui_but.h"
|
||||||
|
#include "foo.h"
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
Q_INIT_RESOURCE(res);
|
Q_INIT_RESOURCE(res);
|
||||||
QApplication app(argc, argv);
|
QApplication app(argc, argv);
|
||||||
QWidget window;
|
Foo window;
|
||||||
Ui::Form ui;
|
Ui::Form ui;
|
||||||
ui.setupUi(&window);
|
ui.setupUi(&window);
|
||||||
window.show();
|
window.show();
|
||||||
|
31
demos/qt5/testqt5.cpp
Normal file
31
demos/qt5/testqt5.cpp
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
// Example of Qt5 Unit test with QtTest library
|
||||||
|
// Federico Pellegrin, 2019 (fedepell)
|
||||||
|
|
||||||
|
#include "foo.h"
|
||||||
|
#include <QtTest/QtTest>
|
||||||
|
|
||||||
|
class TestQt5Test: public QObject {
|
||||||
|
Q_OBJECT
|
||||||
|
private:
|
||||||
|
Foo myFoo;
|
||||||
|
private slots:
|
||||||
|
void testGui();
|
||||||
|
void testFunc();
|
||||||
|
};
|
||||||
|
|
||||||
|
// Test of the UI by simulating a button click and button label reading
|
||||||
|
void TestQt5Test::testGui() {
|
||||||
|
QCOMPARE(myFoo.m_button->text(), QString("Foo Button"));
|
||||||
|
QTest::mouseClick(myFoo.m_button,Qt::LeftButton,Qt::NoModifier,QPoint(5,5),0);
|
||||||
|
QCOMPARE(myFoo.m_button->text(), QString("Button Foo"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Test of a normal function
|
||||||
|
void TestQt5Test::testFunc() {
|
||||||
|
QCOMPARE(myFoo.FortyTwo(), 44); // this fails! 42 != 44
|
||||||
|
}
|
||||||
|
|
||||||
|
QTEST_MAIN(TestQt5Test)
|
||||||
|
|
||||||
|
#include "testqt5.moc"
|
||||||
|
|
@ -1,6 +1,7 @@
|
|||||||
#! /usr/bin/env python
|
#! /usr/bin/env python
|
||||||
# encoding: utf-8
|
# encoding: utf-8
|
||||||
# Thomas Nagy, 2016 (ita)
|
# Thomas Nagy, 2016 (ita)
|
||||||
|
# Federico Pellegrin, 2019 (fedepell)
|
||||||
|
|
||||||
VERSION='0.0.1'
|
VERSION='0.0.1'
|
||||||
APPNAME='qt5_test'
|
APPNAME='qt5_test'
|
||||||
@ -9,10 +10,10 @@ top = '.'
|
|||||||
out = 'build'
|
out = 'build'
|
||||||
|
|
||||||
def options(opt):
|
def options(opt):
|
||||||
opt.load('compiler_cxx qt5')
|
opt.load('compiler_cxx qt5 waf_unit_test')
|
||||||
|
|
||||||
def configure(conf):
|
def configure(conf):
|
||||||
conf.load('compiler_cxx qt5')
|
conf.load('compiler_cxx qt5 waf_unit_test')
|
||||||
#conf.env.append_value('CXXFLAGS', ['-g']) # test
|
#conf.env.append_value('CXXFLAGS', ['-g']) # test
|
||||||
|
|
||||||
def build(bld):
|
def build(bld):
|
||||||
@ -32,3 +33,25 @@ def build(bld):
|
|||||||
langname = 'somefile', # include the .qm files from somefile.qrc
|
langname = 'somefile', # include the .qm files from somefile.qrc
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Example of integration of Qt5 Unit tests using Qt5Test using waf_unit_test
|
||||||
|
bld(
|
||||||
|
features = 'qt5 cxx cxxprogram test',
|
||||||
|
use = 'QT5CORE QT5WIDGETS QT5TEST',
|
||||||
|
source = 'foo.cpp testqt5.cpp',
|
||||||
|
moc = 'foo.h',
|
||||||
|
target = 'footest',
|
||||||
|
includes = '.',
|
||||||
|
# ut_str = './${SRC} -o test-report.xml,xunitxml', # put output to a xunit xml
|
||||||
|
)
|
||||||
|
|
||||||
|
bld.add_post_fun(print_test_results) # print output of test runner to user
|
||||||
|
|
||||||
|
|
||||||
|
def print_test_results(bld):
|
||||||
|
lst = getattr(bld, 'utest_results', [])
|
||||||
|
if not lst:
|
||||||
|
return
|
||||||
|
for (f, code, out, err) in lst:
|
||||||
|
print(out.decode('utf-8'))
|
||||||
|
print(err.decode('utf-8'))
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user