问题标签 [qttest]
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 - 如何测试从文件中读取数据的方法
我有一个带有以下构造函数的类:MyClass(QFile& file);
. 我想用Qt Test framework对其进行单元测试。如何从单元测试中指定文件的内容(而不实际创建真实文件)?
qt - Qt 测试模拟 MouseEvent 未转发到子小部件
我做了一些调查,是否可以使用 QtTest 来测试我的一些自定义 Qt 小部件。
我能够构建和运行测试,还能够模拟事件并使用QSignalSpy
.
我要测试的小部件不会显示它们的内部子小部件,因此我必须模拟鼠标点击相对于它们的父小部件的位置。
出于某种原因,我在这种方法上失败了。以下代码段显示了我想要实现的目标。
第一次点击被认为是正确的,而第二次点击却以某种方式消失了。这是为什么?
我想知道,如果我真的了解如何正确使用框架,处理鼠标位置,对于实际的测试框架来说似乎太乏味和脆弱了。
修订:
很明显,在 GUI 测试中使用坐标是非常脆弱的。因此,我找到了一个解决方案,利用findChild
它实际上做同样的事情。
这结合了两个优点。首先,不再需要处理坐标,其次您仍然不需要触摸要测试的小部件的代码。
objectName()
对于这种方法,如果每个 gui 元素都有一个独特的支持简单搜索机制,这似乎是有利的。
c++ - 调用 qExec 时出错“参数 1 到 QObject 的未知转换”
我正在尝试使用 QtTest 为 c++ 应用程序创建测试。我拥有的三个相关文件是:GuiTests.cpp
其中包含我的主要功能,testsuite1.cpp
包含我的测试以及包含我的测试testsuite1.h
的定义。我在不同指南的帮助下创建了这些文件,例如这个.
当我尝试构建时,出现此错误:
我不明白为什么,正如您在testsuite.h
下面看到TestSuite1
的那样QObject
。有趣的是这个确切的代码(我很确定)之前工作过,但后来我摆弄argc
了argv
一段guiTest()
时间,然后我删除argc
并argv
回到了我之前的状态(我目前拥有的,请参阅下面的文件)我收到了这个错误。
我一直在尝试解决这个问题很长时间,但我在网上找不到任何答案,所以请帮助我,感谢任何帮助。谢谢!
GuiTests.cpp
测试套件1.h
测试套件1.cpp
c++ - 如何使用 Qt 测试控制 QFileDialog?
我有两个问题:
如何
QFileDialog
使用 Qt 测试模块在“文件名”字段中访问和写入文件的路径?我问这个是因为我正在 Qt 中开发一些 GUI 测试,现在我需要打开一个文本文件。以下代码创建
/li>QFileDialog
并获取文件路径:如果我使用线程 (
QThread
) 加载此文本文件中的内容,我如何才能等待此线程在我的 GUI 测试中完成?我知道我可以使用该
QTest::qSleep( milliseconds );
命令,但我认为在这种情况下这不是一个好习惯。
如果可能的话,请给我一个例子。
c++ - 如何将多种类型传递给单个 QTest::addColumn 调用
我有一个模板函数,用于将数据序列化到一个文件中,另一个使用第一个函数返回的 ID 将其检索回来:
现在我想使用QTest
框架为这些类型创建一个单元测试,相关的不完整private slots
:
我的问题基本上是什么应该是???
.
拼写出来
为了完整起见,明显的解决方案。我特别想找到一个不需要全部输入的解决方案。
QVariant
一种解决方法是使用QVariant
. 问题很多。首先它相当混乱,即使在使用 Qt 类型时也是如此,因为QVector<qint64>
需要将它们注册到元系统,注册它们的流操作符和注册它们的比较操作符......此外,它添加了QVariant
自身的序列化到混合和序列化自定义类型QVariant
中涉及一些比类型本身更进一步的数据。这当然不仅仅是文档所说的应该是什么QVariant
- 我猜它可能与元系统及其在.序列化自定义类型时调用的特殊流方法有关QVariant
。
void* 和 dynamic_cast?
我想到的另一个选择是使用typeid
's resulttype_info
和void*
. 将在 the???
中替换为void
*_data
并提供包含 的另一列,const type_info*
以便测试方法可以将其转换为正确的类型并取消引用它。但不幸的是,这似乎是不可能的。
还有其他选择吗?
qt - QTest::currentTestFailed() 为 init 和 cleanup TestCase 函数返回什么?
当前使用 QT 4.8 并根据文档 QTest::currentTestFailed() “如果当前测试功能失败,则返回 true,否则返回 false。” 我不确定这是否意味着该值将给出 init 函数的失败/成功结果,或者在它之前调用的单元测试。
qt - QTest、mousePress 和 mouseMove:Qt 测试中缺少拖放事件
我有一个带有 QTreeView 和 QGraphicsSceneView 的 GUI。
树视图使用的模型支持拖动事件,图形场景支持拖放事件。
我想用 QTest: mousePress
、mouseMove
等模拟用户操作mouseRelease
。
我写了这段代码:
在这里,我的鼠标真的移动到了树项目 rect,选择了它——然后移动到场景的中心,没有任何拖放。
你能告诉我,我该如何解决它?
qt - 如何将 QtTest 与 qbs 一起使用
我找不到使用 qbs 构建测试的明确示例。我试过这样
TestTask 是一个 QObject 子类。但是编译器说我错过了 main() 函数。
c++ - 关于 qtestmouse 内部失败的警告?
我正在使用 QtTest 并且刚刚更新到 Qt 5.9 并且有这种警告:
Q_FALLTHROUGH()
他们都指向qtestmouse.h
所以显然我需要添加一些东西,QMAKE_CXXFLAGS
但无法找出究竟是什么。
我可以忽略这些警告,pragma
但想进一步了解这个主题。