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_
|
Source code
|
1
|
QTEST_MAIN(TestClass)
|
zu schreiben.

Habt ihr einen Vorschlag? Folgender Ansatz:
testlib.cpp
|
Source code
|
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
|
Source code
|
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
|
Source code
|
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