J'essaie de créer des tests pour une application C++ avec QtTest. Les trois fichiers pertinents que j'ai sont: GuiTests.cpp
qui contient ma fonction principale, testsuite1.cpp
qui contient mes tests et testsuite1.h
qui contient les définitions de mes tests. J'ai créé ces fichiers avec l'aide de différents guides, par exemple this one.Erreur lors de l'appel de qExec "aucune conversion connue pour l'argument 1 vers QObject"
Lorsque je tente de construire je reçois cette erreur:
no matching function for call to 'qExec(TestSuite1 (*)(), int&, char**&)'
no known conversion for argument 1 from 'TestSuite1 (*)()' to 'QObject*'
Je ne comprends pas pourquoi, comme vous pouvez le voir dans testsuite.h
ci-dessous TestSuite1
est un QObject
. La chose amusante est ce code exact (je suis assez sûr) travaillé avant, mais j'ai joué avec argc
et argv
à guiTest()
pendant un certain temps, et après avoir enlevé argc
et argv
et est retourné à ce que j'avais avant (ce que je suis actuellement avoir, s'il vous plaît voir les fichiers ci-dessous) J'ai eu cette erreur.
J'ai essayé de résoudre ce problème depuis longtemps et je ne trouve pas de réponses en ligne, alors aidez-moi s'il vous plaît, toute aide est appréciée. Merci!
GuiTests.cpp
#include "testsuite1.h"
#include <QtTest>
#include <QCoreApplication>
int main(int argc, char** argv) {
TestSuite1 testSuite1();
return QTest::qExec(&testSuite1, argc, argv);
}
testsuite1.h
#ifndef TESTSUIT1_H
#define TESTSUIT1_H
#include <QMainWindow>
#include <QObject>
#include <QWidget>
#include <QtTest>
class TestSuite1 : public QObject {
Q_OBJECT
public:
TestSuite1();
~TestSuite1();
private slots:
// functions executed by QtTest before and after test suite
void initTestCase();
void cleanupTestCase();
// functions executed by QtTest before and after each test
//void init();
//void cleanup();
// test functions
void testSomething();
void guiTest();
};
#endif // TESTSUIT1_H
testsuite1.cpp
#include "testsuite1.h"
#include <QtWidgets>
#include <QtCore>
#include <QtTest>
TestSuite1::TestSuite1()
{
}
TestSuite1::~TestSuite1()
{
}
void TestSuite1::initTestCase()
{
}
void TestSuite1::cleanupTestCase()
{
}
void TestSuite1::guiTest()
{
QVERIFY(1+1 == 2);
}
void TestSuite1::testSomething()
{
QLineEdit lineEdit;
QTest::keyClicks(&lineEdit, "hello world");
QCOMPARE(lineEdit.text(), QString("hello world"));
//QVERIFY(1+1 == 2);
}
//QTEST_MAIN(TestSuite1)
//#include "TestSuite1.moc"
Ah! Je savais que ça allait être quelque chose de stupide comme ça. Merci beaucoup mon pote! – Dandido