Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用qExec时出错;参数1到QObject的转换未知“; 我试图用C++测试为C++应用程序创建测试。我拥有的三个相关文件是:GuiTests.cpp,其中包含我的主要函数,testsuite1.cpp,其中包含我的测试和testsuite1.h,其中包含我的测试的定义。例如,我在不同指南的帮助下创建了这些文件_C++_Qt_Testing_Qobject_Qttest - Fatal编程技术网

调用qExec时出错;参数1到QObject的转换未知“; 我试图用C++测试为C++应用程序创建测试。我拥有的三个相关文件是:GuiTests.cpp,其中包含我的主要函数,testsuite1.cpp,其中包含我的测试和testsuite1.h,其中包含我的测试的定义。例如,我在不同指南的帮助下创建了这些文件

调用qExec时出错;参数1到QObject的转换未知“; 我试图用C++测试为C++应用程序创建测试。我拥有的三个相关文件是:GuiTests.cpp,其中包含我的主要函数,testsuite1.cpp,其中包含我的测试和testsuite1.h,其中包含我的测试的定义。例如,我在不同指南的帮助下创建了这些文件,c++,qt,testing,qobject,qttest,C++,Qt,Testing,Qobject,Qttest,当我尝试构建时,会出现以下错误: no matching function for call to 'qExec(TestSuite1 (*)(), int&, char**&)' no known conversion for argument 1 from 'TestSuite1 (*)()' to 'QObject*' 我不明白为什么,正如您在下面的testsuite.h中看到的那样TestSuite1是一个QObject。有趣的是,这个确切的代码(我很确定)以前工作过

当我尝试构建时,会出现以下错误:

no matching function for call to 'qExec(TestSuite1 (*)(), int&, char**&)'

no known conversion for argument 1 from 'TestSuite1 (*)()' to 'QObject*'
我不明白为什么,正如您在下面的
testsuite.h
中看到的那样
TestSuite1
是一个
QObject
。有趣的是,这个确切的代码(我很确定)以前工作过,但后来我把
argc
argv
传递给
guiTest()
一段时间,在我删除
argc
argv
之后,我又回到了以前的状态(我现在拥有的,请查看下面的文件)我犯了这个错误

我一直在努力解决这个问题很长一段时间,我找不到任何答案在线,所以请帮助我,任何帮助是感激的。谢谢

吉他

#include "testsuite1.h"
#include <QtTest>
#include <QCoreApplication>

int main(int argc, char** argv) {
    TestSuite1 testSuite1();
    return QTest::qExec(&testSuite1, argc, argv);
}
#包括“testsuite1.h”
#包括
#包括
int main(int argc,字符**argv){
TestSuite1 TestSuite1();
返回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
\ifndef TESTSUIT1\u H
#定义TESTSUIT1_H
#包括
#包括
#包括
#包括
类TestSuite1:公共QObject{
Q_对象
公众:
TestSuite1();
~TestSuite1();
专用插槽:
//QtTest在测试套件之前和之后执行的函数
void initTestCase();
void cleanupTestCase();
//QtTest在每次测试前后执行的函数
//void init();
//空洞清理();
//测试函数
使某物无效();
void guiTest();
};
#endif//TESTSUIT1\u 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"
#包括“testsuite1.h”
#包括
#包括
#包括
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(测试套件1)
//#包括“TestSuite1.moc”
声明名为
testSuite1
的函数,返回
testSuite1
。获取它的地址将为您提供
TestSuite1(*)(
(一个函数指针),而不是转换为
QObject*
TestSuite1*

使用以下选项之一:

TestSuite1 testSuite1;
TestSuite1 testSuite1{};
auto testSuite1 = TestSuite();
auto testSuite1 = TestSuite{};
声明一个变量

声明名为
testSuite1
的函数,返回
testSuite1
。获取它的地址将为您提供
TestSuite1(*)(
(一个函数指针),而不是转换为
QObject*
TestSuite1*

使用以下选项之一:

TestSuite1 testSuite1;
TestSuite1 testSuite1{};
auto testSuite1 = TestSuite();
auto testSuite1 = TestSuite{};

声明一个变量。

Ah!我就知道会发生这样的傻事。谢谢你,伙计!啊!!我就知道会发生这样的傻事。谢谢你,伙计!