Ich schreibe gerade viele Kalkulationsklassen und würde gerne zum testen dieser die <QtTest> Funktionalität benutzen.
Jedoch nach langen lesen, suchen, versuchen bekomme ich dass Ding nicht zum laufen und würde gerne um eure Hilfe ersuchen.
Funktionalität:
1.) Die Klasse bekommt eine Daten
2.) führt eine Berechnung aus (in diesem Fall eine simple Adition)
3.) versendet ein Signal mit dem Resultat.
Bsp.:
main.cc
Code: Alles auswählen
#include <QApplication>
#include "Plus.hh"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Plus p;
p.setNumber1( 5 ); // Berechnung 1
p.setNumber2( 5 ); // Berechnung 2
return a.exec();
}
Code: Alles auswählen
#ifndef PLUS_HH
#define PLUS_HH
#include <QObject>
class Plus : public QObject
{
Q_OBJECT
public:
explicit Plus(QObject *parent = 0);
void setNumber1( int iNumber );
void setNumber2( int iNumber );
void calc(); // plus
signals:
void calcSignal(int iResult);
public slots:
private:
int iNumber1;
int iNumber2;
};
#endif // PLUS_HH
Plus.cc
Code: Alles auswählen
#include "Plus.hh"
#include <QDebug>
Plus::Plus(QObject *parent) :
QObject(parent),
iNumber1( 0 ),
iNumber2( 0 )
{
qDebug() << "Calc";
}
void Plus::setNumber1( int iNumber )
{
iNumber1 = iNumber;
calc();
}
void Plus::setNumber2( int iNumber )
{
iNumber2 = iNumber;
calc();
}
void Plus::calc()
{
int iResult = iNumber1 + iNumber2;
qDebug() << "Result: " << iResult;
emit calcSignal( iResult );
}
test_plus.cpp
Code: Alles auswählen
#include <QtTest/QtTest>
#include <QtTest/QSignalSpy>
#include "../plus/Plus.hh"
class TestPlus: public QObject
{
Q_OBJECT
private slots:
void addition_data();
void addition();
};
void TestPlus::addition_data() //???
{
QTest::addColumn<int>("number");
QTest::newRow("calc-1") << 1;
QTest::newRow("calc-2") << 2;
QTest::newRow("calc-3") << 3;
QTest::newRow("calc-4") << 4;
QTest::newRow("calc-5") << 5;
}
void TestPlus::addition() //???
{
Plus plus;
// QFETCH(int, result);
//QCOMPARE( plus.calc(), result);
QSignalSpy spy( &plus, SIGNAL(calcSignal(int)) );
plus.setNumber1( 5 );
QList<QVariant> arguments = spy.takeFirst();
QVERIFY(arguments.at(0).type() == QVariant::Int);
}
QTEST_MAIN(TestPlus)
#include "test_plus.moc"
Irgendwie stehe ich da komplett auf der Leitung und würde um Hilfe ersuchen.