gpt4 book ai didi

c++ - QSignalSpy 等待和两个信号

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:13:49 31 4
gpt4 key购买 nike

我正在尝试为基于 Qt 的项目(Qt 5、C++03)中的类编写单元测试。

class Transaction { // This is just a sample class
//..
public signals:
void succeeded();
void failed();
}

Transaction* transaction = new Transaction(this);
QSignalSpy spy(transaction, SIGNAL(succeeded()));
transaction->run();
spy.wait(5000); // wait for 5 seconds

我希望我的测试运行得更快。如果交易失败,如何在发出信号 failed() 后中断此 wait() 调用?

我在 QSignalSpy 类中没有看到任何可用的插槽。

我应该改用 QEventLoop 吗?

最佳答案

您可能必须使用循环并手动调用 QTest::qWait()当两个信号都没有发出时:

QSignalSpy succeededSpy(transaction, SIGNAL(succeeded()));
QSignalSpy failedSpy(transaction, SIGNAL(failed()));
for (int waitDelay = 5000; waitDelay > 0 && succeededSpy.count() == 0 && failedSpy.count() == 0; waitDelay -= 100) {
QTest::qWait(100);
}

QCOMPARE(succeededSpy.count(), 1);

关于c++ - QSignalSpy 等待和两个信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33538785/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com