问题标签 [qtestlib]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
qt - QTest 无法将事件传递给子小部件
我正在使用qtestlib
. 在下面的示例代码中:
我不能通过le
向其父小部件发送事件来获得焦点并输入“你好” win
。但我可以通过le
直接发送事件来做到这一点。
事情是通常在自定义 QWidget 类中有许多私有小部件成员。而且我无法通过将事件发送到实例来模拟键/鼠标事件。当然,我不能将事件发送到它的私有小部件。那么我该怎么做才能对此类进行自动测试呢?
环境:Gentoo Linux KDE Qt-4.8
qt - QTest 鼠标单击 QPushButton
我尝试使用 QTest 命名空间的 mouseClick 函数单击 QPushButton。QPushButton 是 Widget 的私有成员。单击期间鼠标光标的位置在按钮的中心,但未单击按钮...有人能解释一下为什么吗?
谢谢
c++ - 如何创建依赖注入来测试 QTcpSocket?
我正在尝试为我编写的 Qt5 应用程序编写单元测试,但我对如何处理涉及网络的类感到困惑。我的主类包括一个 QTcpServer 子类,它覆盖 QTcpServer::incomingConnection 以创建一个 ClientConnection 对象并将其交给一个线程:
ClientConnection 类使用 socketDescriptor 在专用线程中打开一个新的 QTcpSocket,从客户端接收数据,并对其进行处理。
这门课还没有结束,但我现在想开始写测试。我的问题是如何处理socketDescriptor。我假设我需要使用某种依赖注入,但如果不在测试用例中创建整个 QTcpServer,我认为这是不可行的。
这些天来测试网络代码一定很常见,所以必须有一种通用的方法来处理这个问题,而不包括我的一半应用程序。这似乎是一个普遍的问题,但如果需要有关我的特定应用程序的更多详细信息,请告诉我。
qt - 使用 QTest 单击按钮的最简单方法
有人可以向我解释在 QTest 中单击按钮或其他类似 QComboBox 的最简单方法吗?
我试过这个:
鼠标正好在 QComboBox-Widget 上方,但单击鼠标时没有任何反应。
谢谢。
qt5 - 如何运行 QTQuick 测试
如何在 main.cpp 中为 QtQuick-Applications 运行测试?main.qml 有一个矩形和一些按钮。测试类 MouseClick.qml 实现了应该按下按钮的 javascript 测试函数。
c++ - QTestLib 是否可以在运行时显示它正在测试的 GUI?
用例是,我有一个 Qt 应用程序,我想自动化用户风格的测试;也就是说,我想使用 keyClicks()、mouseClick() 等,但我希望 Qt 应用程序窗口在发生这种情况时实际显示。
我现在遇到的问题是使用 QTestLib 涉及使用 QTEST_MAIN 宏而不是自己定义 main ,所以我从来没有机会 show() 正在测试的小部件。所以,这个问题的另一种说法是,有没有办法在使用其主要功能的应用程序上使用 QTestLib?
我知道 Squish 和可能的 Testability Driver 能够做到这一点,但如果可以在不使用额外工具的情况下获得此功能,那将是理想的。
c++ - QTest 异步信号拦截
我正在调查QTest以进行GUI 测试。QTest 中似乎没有异步测试信号回调的机制。我是否误解了如何使用 QTest,或者误解了 QTest 提供的预期功能?
例如,我正在尝试测试一个信号,该信号会启动一个模态QMessageBox弹出窗口以响应单击QPushButton。我想测试单击按钮和单击 QMessageBox 上的“确定”之间的事件和状态。我已经尝试使用QSignalSpy.wait()
, QTestEventList.simulate()
, QTest::mouseClick()
,QTest::mouseEvent()
和QTRY_VERIFY()
,所有这些在从测试代码中调用时,直到单击 QMessageBox 弹出窗口上的“确定”后才返回。因此,要在所有事件处理程序返回之前测试任何内容,我必须在被测对象上安装一个事件过滤器,并编写我自己的异步测试代码。
如果我们不使用测试库,这与我们必须编写的所有代码相同,并且我们可以在不使用 QTest 的情况下完成所有这些工作。例如,我们可以手动获取被测对象的句柄,连接信号进行测试,调用事件触发事件处理程序或手动调用信号,也可以在返回执行之前编写与测试环境交互的已安装测试处理程序到事件启动的时间点。QTest 在这里为我们带来了什么?
(也发布在Qt 论坛上)
c++ - QCompare 测试失败:unorded_map 上 [] 运算符产生的参数数量错误
使用 c++/Qt5,我坚持对 MyMap 对象进行 QCOMPARE 测试。这个 MyMap 对象有一个名为“map”的属性,它是一个 unorded_map (vector < int,int> → QString)。
这是测试:
我在最后一行收到以下错误:(我从本地化源消息的翻译):
我不明白mymap[{{ {1,2}, {3,8} }}]如何以某种方式“产生” 4 个参数。
MyMap operator[] 是这样声明的:
MyMap 对象是这样声明的:
MyMap 对象的其他测试都可以。那么,我的错误在哪里?
c++ - 监控/输出发出的 Qt 信号
我定义了一些在不同场合发出的信号:
现在我只想看看这些信号的样子以及参数是否正确。似乎有几种方法可以监控信号。
在这里的帖子中,rohanpm 指的是在-vs
此处更接近指定的参数:http:
//qt-project.org/doc/qt-4.8/qtestlib-manual.html#qtestlib-command-line-arguments
这似乎是获取所需信息的一种优雅而快捷的方式。但老实说,我无法理解我必须如何以及在哪里运行-vs
。它不是qmake
. 我还要把它放在哪里?(我对qt很陌生)。
与QSignalSpy相关,似乎有必要更改现有类?不是也有“外部”方法吗?
有很多关于如何测试插槽的文档 - 但与信号有关?我可以使用 aprintf
或cout
某处吗?
c++ - 如何在单元测试中使用 QTest QBENCHMARK 宏结果作为参数
我正在使用 Qt 中的 QTest 编写一些单元测试。我还遇到了 QBENCHMARK 宏,它对它封装的代码进行基准测试。
我正在运行我的单元测试并对一些代码进行基准测试。QBENCHMARK 报告执行某个方法需要多长时间,这很好。我想在单元测试中使用执行时间,例如 QVERIFY2()。我怎样才能做到这一点?
编辑:
我目前正在做的是: