Hi!
Hat sich jemand von euch schonmal mit dem Unit Testing Framework von Qt befasst?
Das Tutorial vom Assistant ist ja sehr nett, einfach und verständlich. Aber ich bekomme es nicht hin, ein Testprogramm _OHNE_
|
Code source
|
1
|
QTEST_MAIN(TestClass)
|
zu schreiben.

Habt ihr einen Vorschlag? Folgender Ansatz:
testlib.cpp
|
Code source
|
1
2
3
4
5
6
7
8
9
10
11
12
|
#include <QCoreApplication>
#include <QTest>
#include "QMTestObject.h"
int main(int argc, char** argv) {
QCoreApplication app(argc, argv);
QMTestObject test;
return QTest::qExec(&test, argc, argv);
}
|
QMTestObject.h
|
Code source
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#ifndef QMTESTOBJECT_H_
#define QMTESTOBJECT_H_
#include <QObject>
class QMTestObject: public QObject {
Q_OBJECT
private slots:
void testName();
};
#endif /*QMTESTOBJECT_H_*/
|
QMTestObject.cpp
|
Code source
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include "QMTestObject.h"
#include <QTest>
#include <QString>
#include "QMObject.h"
void QMTestObject::testName() {
QMObject *o = new QMObject();
o->setName("QMTestObject::testName");
QCOMPARE(o->name(), QString("QMTestObject::testName"));
}
|
An sich sehr simpel. Ich entdecke auch keinen Fehler. Aber beim verlinken findet er die vtable von meiner Testklasse nicht.
release/libtest.o(.text+0x83):libtest.cpp: undefined reference to `vtable for QMTestObject'
release/libtest.o(.text+0xb8 ):libtest.cpp: undefined reference to `vtable for QMTestObject'
release/libtest.o(.text+0x102):libtest.cpp: undefined reference to `vtable for QMTestObject'
Ideen? Ich möchte nämlich nicht für jeden TestCase eine eigene Applikation (-> EXE) erstellen, sondern die Testfälle in einer "Testumgebung" einpflegen, damit die Übersicht gewahrt bleibt.
MfG