Unittestbeispiel mit Visual Studio 2005 IDE
Verfasst: 18. Mai 2007 06:39
Hallo Liebe qt-Gemeinde,
ich bekomme kein Visual Studio 2005 Projekt hin, wo unten aufgefuehrter Code laeuft. Wenn ich das erzeugte Programm aufrufe bekomme ich folgende Fehlermeldung:
QFATAL : UnitTest::doUnitTest() QWidget: Cannot create a QWidget when no GUI is being used.. Dieser Fehler wird verursacht, wenn das QLineEdit instanziiert wird. Es wird eine Exception in qglobal/qglobal.h:2156, die letztlich besagt, dass der Application Type Console ist ...
ABER:
Ich habe den Code auf der Kommandozeile mit qmake und einem anschliessenden nmake uebersetzt und da lief der Code ohne Probleme - ist ja im Prinzip auch der identische Code eines qt Beispiels. Das Projektfile sieht so aus:
CONFIG += qtestlib
TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
# Input
HEADERS += UnitTest.h
SOURCES += UnitTest.cpp
Ich erhalte u.a. die Ausgabe:
QDEBUG : UnitTest::doUnitTest() Erfolgreich erzeugtes Line Edit
Soweit so gut.
Ich habe mir die von qmake erzeugten Makefiles angeschaut und die Einstellungen im Visual Studio 2005 nachgebildet aber trotzdem funzt es nicht. Ein regulaeres Visual Studio 2005 Projekt habe ich am Laufen nur dieses Beispiel, wenn ich die qttestlib verwende !!!und!!! im Beispiel ein GUI Objekt instanziiere kommt die o.g. Exception.
Nun meine Frage:
Was mache ich falsch?
Kann mir jemand weiterhelfen?
Viele Gruesse in die qt Gemeinde.
Code Unittest.h:
#ifndef UNITTEST_H_
#define UNITTEST_H_
#endif /*UNITTEST_H_*/
Code Unittest.cpp:
//----------------------------------------
#include <QtTest/QtTest>
#include <QtGui>
class UnitTest: public QObject
{
Q_OBJECT
public:
UnitTest();
virtual ~UnitTest();
private slots:
void initTestCase()
{ qDebug("called before everything else"); }
void myFirstTest()
{ QVERIFY(1 == 1); }
void mySecondTest()
{ QVERIFY(1 != 2); }
void doUnitTest();
void cleanupTestCase()
{ qDebug("called after myFirstTest and mySecondTest"); }
};
UnitTest::UnitTest()
{
}
UnitTest::~UnitTest()
{
}
void UnitTest::doUnitTest()
{
QLineEdit lineEdit;
qDebug("Erfolgreich erzeugtes Line Edit");
}
QTEST_MAIN(UnitTest)
#include "UnitTest.moc"
ich bekomme kein Visual Studio 2005 Projekt hin, wo unten aufgefuehrter Code laeuft. Wenn ich das erzeugte Programm aufrufe bekomme ich folgende Fehlermeldung:
QFATAL : UnitTest::doUnitTest() QWidget: Cannot create a QWidget when no GUI is being used.. Dieser Fehler wird verursacht, wenn das QLineEdit instanziiert wird. Es wird eine Exception in qglobal/qglobal.h:2156, die letztlich besagt, dass der Application Type Console ist ...
ABER:
Ich habe den Code auf der Kommandozeile mit qmake und einem anschliessenden nmake uebersetzt und da lief der Code ohne Probleme - ist ja im Prinzip auch der identische Code eines qt Beispiels. Das Projektfile sieht so aus:
CONFIG += qtestlib
TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
# Input
HEADERS += UnitTest.h
SOURCES += UnitTest.cpp
Ich erhalte u.a. die Ausgabe:
QDEBUG : UnitTest::doUnitTest() Erfolgreich erzeugtes Line Edit
Soweit so gut.
Ich habe mir die von qmake erzeugten Makefiles angeschaut und die Einstellungen im Visual Studio 2005 nachgebildet aber trotzdem funzt es nicht. Ein regulaeres Visual Studio 2005 Projekt habe ich am Laufen nur dieses Beispiel, wenn ich die qttestlib verwende !!!und!!! im Beispiel ein GUI Objekt instanziiere kommt die o.g. Exception.
Nun meine Frage:
Was mache ich falsch?
Kann mir jemand weiterhelfen?
Viele Gruesse in die qt Gemeinde.
Code Unittest.h:
#ifndef UNITTEST_H_
#define UNITTEST_H_
#endif /*UNITTEST_H_*/
Code Unittest.cpp:
//----------------------------------------
#include <QtTest/QtTest>
#include <QtGui>
class UnitTest: public QObject
{
Q_OBJECT
public:
UnitTest();
virtual ~UnitTest();
private slots:
void initTestCase()
{ qDebug("called before everything else"); }
void myFirstTest()
{ QVERIFY(1 == 1); }
void mySecondTest()
{ QVERIFY(1 != 2); }
void doUnitTest();
void cleanupTestCase()
{ qDebug("called after myFirstTest and mySecondTest"); }
};
UnitTest::UnitTest()
{
}
UnitTest::~UnitTest()
{
}
void UnitTest::doUnitTest()
{
QLineEdit lineEdit;
qDebug("Erfolgreich erzeugtes Line Edit");
}
QTEST_MAIN(UnitTest)
#include "UnitTest.moc"