【问题标题】:Test signal with my own class用我自己的班级测试信号
【发布时间】:2017-12-01 21:48:53
【问题描述】:

我有一个班级可以与我的另一个班级发出一些信号。示例:

class CMyClass : public QBytaArray
{
    void SomeAction();
}

class CMainClass : public QObject
{
    signals:
        void testSignal(const CMyClass &myClass);

    public:
        void test() {
          CMyClass data;  
          emit testSignal(data);
        }
}

我为 CMainClass 编写了 unix 测试:

标题:

#ifndef TESTMAINCLASS_H
#define TESTMAINCLASS_H

#include <QObject>
#include <QSignalSpy>

#include "MainClass.h"

Q_DECLARE_METATYPE(CMyClass)

class CTestMainClass : public QObject
{
  Q_OBJECT
public:
  explicit CTestMainClass(QObject *parent = 0);

private slots:
  void testS();
};

#endif // TESTMAINCLASS_H

来源:

#include <QDebug>

#include "TestMainClass.h"

CTestMainClass::CTestMainClass(QObject *parent) : QObject(parent)
{
  qRegisterMetaType<CMyClass>();
}

void CTestMainClass::testS()
{
  qDebug() << "Test signal emitor";
  CMainClass prc;

  QSignalSpy spy(&prc, SIGNAL(testSignal(const CMyClass&)));
  prc.test();


  CMyClass buf = qvariant_cast<CMyClass>(spy.at(0).at(0));

}

但是,在日志文件中我有:

PASS : CTestCommandProcessor::initTestCase() QDEBUG : CTestCommandProcessor::testS() 测试信号发射器 QDEBUG : CTestCommandProcessor::testS() 计数:1 QDEBUG : CTestCommandProcessor::testS() Vals: QVariant(CMyClass, ) 崩溃 发生在 C:\UnitTest\build-UnitTest-Qt_5_7_1_5_7_1_Static-Release\release\UnitTest.exe。 函数时间:0ms 总时间:0ms

我试图改变字符串:

CMyClass buf = qvariant_cast(spy.at(0).at(0));

CMyClass buf = qvariant_cast(spy.at(0).at(0));

但是,我遇到了同样的错误。 怎么了?我可以在自己的类中使用 Qt 的 unittest 信号吗?

【问题讨论】:

  • 你能发布完整的代码吗?在您的示例中,您在 CMyClass 上调用 test(),但 CMyClass 没有这种方法。此外,您粘贴的 2 行:CMyClass buf = qvariant_cast(spy.at(0).at(0)); 完全相同。
  • 对不起。发布完整代码。
  • 堆栈跟踪在哪里?
  • 如何获取堆栈跟踪?

标签: qt unit-testing qsignalspy


【解决方案1】:

我很抱歉,这是我的错。 我使用了间谍的 takeFirst() 方法。然后那个间谍的对象就没有信号了。

【讨论】:

    猜你喜欢
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多