我定义了一些在不同场合发出的信号:
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吗?
发布于 2014-06-08 16:35:18
在阅读更多关于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;它似乎做了我想做的事。
发布于 2014-06-03 15:34:54
正如链接文档所写:
使用所有可用的测试数据运行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手册
https://stackoverflow.com/questions/24018783
复制相似问题