问题标签 [qtest]

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.

0 投票
2 回答
636 浏览

jenkins - qTest | Jenkinsfile 流水线集成

在以下链接之后,我已将 qTest 与 Jenkinsfile 管道集成。 https://www.qasymphony.com/video-training/qtest/project-admin/how-to-integrate-qtest-jenkins-pipeline-projects/

与我的管道集成后,我观察到以下错误。

Jenkinsfile 管道脚本

0 投票
0 回答
85 浏览

python - PyQt 是否支持 QTest 宏,如 QTRY_VERIFY

PyQt 是否支持 QTest 宏,如QVERIFY,更重要的是QTRY_VERIFY

我环顾四周,但找不到它,但也许我忽略了一些东西

如果不是,那么支持此功能的最佳方式是什么?我宁愿不使用qtbot,因为我们同时使用 Python 和 C++,而且我更喜欢在两个代码库上使用相同的测试框架。

0 投票
0 回答
453 浏览

c++ - Qt5/QTest:如何模拟时钟速度(QTimer等)?

我正在寻找一种方法来改变(加速)单元测试的时钟,因此自动化测试不需要等待太长时间来发生与时间或定时器相关的事件。其他框架有时会提供例如“模拟时钟”,但我找不到与 QTest 框架类似的东西。目前,仅加速 QTimer/QSingleShotTimer 而不是整个应用程序的“事件流”也对我有用。

仅对于 QTimer,似乎可以模拟 QTimerEvents,将它们发送到特定的 QTimer 对象。但是捕获对 startTimer() 的初始调用似乎更复杂。QTimer 还为单次事件在内部创建 QSingleShotTimer 对象,并且还需要处理这些对象。因此,它对我来说看起来并不可行。

在这些方面,我将不胜感激任何提示或帮助。也许我使用了所有错误的搜索词,但在 Qt 文档或论坛(或任何网络搜索结果)中找不到与“操纵时间”相关的任何内容。提前非常感谢!

0 投票
1 回答
184 浏览

c++ - 全局功能识别失败

当有一个简单的 qtest 比较用户定义结构的 2 个不同对象时:

为什么有区别:

(1)

(2)

第一个在比较对象时确实调用了该函数,第二个没有!

正如这个结论中提到的,除了匿名命名空间允许您定义翻译单元本地类型之外,应该没有区别。好吧,这里看起来正好相反。

0 投票
0 回答
729 浏览

c++ - 使用 GoogleTest 和 QTest 测试 GUI

我有一个 GUI,我想测试这个 GUI 的许多功能。问题是子小部件都是这个主要 GUI 类的私有成员。当我无法填充任何这些子小部件时,如何测试我的主 GUI,因为它们在测试类中对我来说是私有的?

例如,我有多个行编辑作为ui对象中的字段。这些行编辑被抓取并转储到特定于该 GUI 的 QVariant 对象类型中。我无法从我的测试函数中填充这些编辑,因为它们由于隐私问题而无法访问。因此,我无法测试 QVariant 对象是否与 GUI 提供的数据匹配。

我也不能调用特定小部件上的任何 QTest 函数来触发事件。

例如,我不能打电话

QTest::mouseClick(testGUI.ui->pushButton1, ...)

因为ui是私有的,并且pushButton1无论它是否是 UI 的一部分都是私有的。因此,我也无法在这些按钮上模拟鼠标单击事件。我也尝试使用

QTest::mouseClick(testGUI, ..., ..., ..., QPoint(70, 180));

QPoint 是按钮相对于小部件的绝对位置,但即使这样也不会触发单击的按钮。

当这么多小部件是私有的并且用户无法访问时,我如何测试这些小部件?

0 投票
1 回答
138 浏览

qt - Qt 中的数据重新驱动测试

我可以让 QTest 多次使用单个数据驱动集吗?


我们在项目中使用 Qt 的 QTest 框架进行低级测试,并在有意义的地方使用数据驱动风格。

我已经到了一个地步,我想对一组测试数据进行几组不同的测试。明显的设计是

或多或少地在文档中,对吧?

但是,如果早期测试失败(注释中的注释),它会缩短后续测试的方式,这是一个小烦恼。有时这是一种期望的行为,有时不是,但现在我希望它尝试第二次测试,即使第一次失败也是如此。

一种可能的替代实施方案是

但是,当然,在时间开始之前,输入teststuff_data()已经被消耗掉了。teststuff2

0 投票
0 回答
46 浏览

qt - 如何测试赋予 ListView 的 highlight 属性的组件?

我正在编写一个组件的测试,它或多或少看起来像这样:

在进行焦点标记部分的测试时,我似乎没有到达focusMarker. 当我做

它返回FAIL! : qmltestrunner::<Slider />::test_focusMarker() 'verify()' returned FALSE. ()。我肯定错过了一些东西,但我不知道是什么。也许这与我需要转到一个重点项目才能出现并进行测试的事实有关。但是我真的不知道该怎么做。非常感谢您的帮助:) 希望我的问题很清楚。

0 投票
1 回答
634 浏览

c++ - 使用 QTest 模拟鼠标移动

QTest用来测试简单的小部件,一切都按预期工作。但是现在我有一个更复杂的测试场景,我基本上有一个小部件,它允许用户按下鼠标按钮,然后移动一些内容,然后释放鼠标按钮。

为此,我创建了以下测试工具:

主文件

WidgetToTest.h

WidgetToTest.cpp

测试对象.h

测试对象.cpp

因此,用户使用鼠标左键单击窗口小部件内的位置 (5,5),然后在按住按钮的同时拖动鼠标到位置 (20,20),然后在位置 (20,20) 释放按钮。

有趣的是,移动事件从未发生在小部件内部,我真的不知道为什么。

看来,我并没有完全理解它的用意QTest::mouseMove,但是 Qt 文档在如何使用它方面也比较沉默。

如何模拟我想要的行为?

0 投票
0 回答
267 浏览

c++ - 信号中的冗余命名空间声明以使用 QSignalSpy

我正在尝试QTest结合使用CatchQSignalSpy测试我的应用程序。我不得不说,我使用的是 Qt 5.10.0,这可能很重要。

最近我偶然发现了一种奇怪的行为,我无法真正解释。

主文件

测试用例.h

测试对象.h

如果我将运行发布的代码,我将获得以下输出,这对我来说很好。

但是,如果我将行更改void objectChanged(const nameSpace::MyObject&);void objectChanged(const MyObject&);我获得以下错误输出:

所以有必要在信号定义中包含看似多余的命名空间。搜索并找到这个错误花了我半天时间,现在我也想了解这种行为的可能原因。这是故意的还是 Qt Bug?如果是故意的,那么 Qt 文档中的这个位置在哪里。

这有点类似于为什么必须写

代替

请参阅文档:https ://doc.qt.io/qt-5/qmetatype.html#Q_DECLARE_METATYPE 。

0 投票
1 回答
493 浏览

c++ - 在 Qt 中测试 lambda 唯一连接

我的问题是:当插槽是 lambda 函数时,如何检查 Qt 中是否存在连接?

我有以下代码片段

我想检查我的 GoogleTest 中是否存在此连接:

但是,这不起作用,因为 lambda 插槽被认为是与我在班级本身中连接的不同的 lambda。我将如何检查此连接是否存在?