我定义了一些在不同场合发出的信号:

signals:
    void buttonXClicked(int x);
    void numButtonsChanged(int num);

现在我只想看看这些信号是什么样子以及参数是否正确。似乎有几种方法可以监控信号。

在里面 邮政 这里 rohanpm 指的是参数 -vs 此处更详细地指定:http://qt-project.org/doc/qt-4.8/qtestlib-manual.html#qtestlib-command-line-arguments

这似乎是获取我需要的信息的一种优雅而快速的方法。但说实话,我无法理解我必须如何以及去哪里跑步 -vs. 。它不属于 qmake. 。我还必须把它放在哪里?(我对 qt 还很陌生)。

相关于 QSignalSpy 看来有必要改变现有的类?不是还有一种“外部”方法吗?

有大量关于如何测试插槽的文档 - 但与信号相关?我可以使用一个 printf 或者 cout 某处?

有帮助吗?

解决方案

我在阅读有关 moc 及其功能的更多信息时得到了这个想法。(至少在使用 NetBeans 时)我在 ButtonTest.cpp 文件中添加了 moc_ButtonTest.cpp 文件。里面有一个方法叫做:

// SIGNAL 0
void ButtonTest::buttonXClicked(int _t1)
{
    void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) };
    QMetaObject::activate(this, &staticMetaObject, 0, _a);    
}

我简直不敢相信它是如此简单,但我刚刚添加了一个

std::cout <<"buttonXClicked: "<<_t1;

它似乎正是我想要的。

其他提示

正如链接文档所写:

使用所有可用的测试数据运行 toUpper 测试函数,并使用称为零的测试数据运行 toInt 测试函数(如果指定的测试数据不存在,则关联的测试将失败)。

/myTestDirectory$ testMyWidget -vs -eventdelay 500

其中 testMyWidget 是构建的测试二进制文件。这是 -vs 文档:

-vs输出每个发出的信号

如果您 grep 帮助输出,还会有更多文档:

/myTestDirectory$ testMyWidget --help | grep "\-vs"
-vs outputs every signal that gets emitted

如果你碰巧在写作上遇到困难 QTestLib 基于单元测试,这对于您使用 Qt 4 来说是一个很好的起点:

QTestLib手册

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top