问题标签 [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.

0 投票
0 回答
52 浏览

qt - 如何测试从文件中读取数据的方法

我有一个带有以下构造函数的类:MyClass(QFile& file);. 我想用Qt Test framework对其进行单元测试。如何从单元测试中指定文件的内容(而不实际创建真实文件)?

0 投票
0 回答
743 浏览

qt - Qt 测试模拟 MouseEvent 未转发到子小部件

我做了一些调查,是否可以使用 QtTest 来测试我的一些自定义 Qt 小部件。

我能够构建和运行测试,还能够模拟事件并使用QSignalSpy.

我要测试的小部件不会显示它们的内部子小部件,因此我必须模拟鼠标点击相对于它们的父小部件的位置。

出于某种原因,我在这种方法上失败了。以下代码段显示了我想要实现的目标。

第一次点击被认为是正确的,而第二次点击却以某种方式消失了。这是为什么?

我想知道,如果我真的了解如何正确使用框架,处理鼠标位置,对于实际的测试框架来说似乎太乏味和脆弱了。

修订:

很明显,在 GUI 测试中使用坐标是非常脆弱的。因此,我找到了一个解决方案,利用findChild它实际上做同样的事情。

这结合了两个优点。首先,不再需要处理坐标,其次您仍然不需要触摸要测试的小部件的代码。

objectName()对于这种方法,如果每个 gui 元素都有一个独特的支持简单搜索机制,这似乎是有利的。

0 投票
1 回答
636 浏览

c++ - 调用 qExec 时出错“参数 1 到 QObject 的未知转换”

我正在尝试使用 QtTest 为 c++ 应用程序创建测试。我拥有的三个相关文件是:GuiTests.cpp其中包含我的主要功能,testsuite1.cpp包含我的测试以及包含我的测试testsuite1.h的定义。我在不同指南的帮助下创建了这些文件,例如这个.

当我尝试构建时,出现此错误:

我不明白为什么,正如您在testsuite.h下面看到TestSuite1的那样QObject。有趣的是这个确切的代码(我很确定)之前工作过,但后来我摆弄argcargv一段guiTest()时间,然后我删除argcargv回到了我之前的状态(我目前拥有的,请参阅下面的文件)我收到了这个错误。

我一直在尝试解决这个问题很长时间,但我在网上找不到任何答案,所以请帮助我,感谢任何帮助。谢谢!

GuiTests.cpp

测试套件1.h

测试套件1.cpp

0 投票
1 回答
1507 浏览

c++ - 如何使用 Qt 测试控制 QFileDialog?

我有两个问题:

  1. 如何QFileDialog使用 Qt 测试模块在“文件名”字段中访问和写入文件的路径?

    我问这个是因为我正在 Qt 中开发一些 GUI 测试,现在我需要打开一个文本文件。以下代码创建QFileDialog并获取文件路径:

    /li>
  2. 如果我使用线程 ( QThread) 加载此文本文件中的内容,我如何才能等待此线程在我的 GUI 测试中完成?

    我知道我可以使用该QTest::qSleep( milliseconds );命令,但我认为在这种情况下这不是一个好习惯。

如果可能的话,请给我一个例子。

0 投票
0 回答
534 浏览

c++ - 如何将多种类型传递给单个 QTest::addColumn 调用

我有一个模板函数,用于将数据序列化到一个文件中,另一个使用第一个函数返回的 ID 将其检索回来:

现在我想使用QTest框架为这些类型创建一个单元测试,相关的不完整private slots

我的问题基本上是什么应该是???.

拼写出来

为了完整起见,明显的解决方案。我特别想找到一个不需要全部输入的解决方案。

QVariant

一种解决方法是使用QVariant. 问题很多。首先它相当混乱,即使在使用 Qt 类型时也是如此,因为QVector<qint64>需要将它们注册到元系统,注册它们的流操作符和注册它们的比较操作符......此外,它添加了QVariant自身的序列化到混合和序列化自定义类型QVariant中涉及一些比类型本身更进一步的数据。这当然不仅仅是文档所说的应该是什么QVariant- 我猜它可能与元系统及其在.序列化自定义类型时调用的特殊流方法有关QVariant

void* 和 dynamic_cast?

我想到的另一个选择是使用typeid's resulttype_infovoid*. 将在 the???中替换为void*_data并提供包含 的另一列,const type_info*以便测试方法可以将其转换为正确的类型并取消引用它。但不幸的是,这似乎是不可能的。

还有其他选择吗?

0 投票
1 回答
410 浏览

qt - 如何使用 QtTest 库访问 QAction?

QTableWidget我在(resultTable)中有一个弹出菜单。在我的类的构造函数中,我设置了上下文菜单策略:

popUpMenuResultTable功能:

现在,我需要实现一个函数来使用QtTest库测试我的 GUI。

如何通过右键单击我的resultTable来产生与用户相同的结果?基本上,我需要访问actionExport( QAction) 并触发它。

例如:

在此处输入图像描述

我已经尝试过:

但它没有显示QMenu.

我正在使用 Qt 5.3.2。

0 投票
1 回答
186 浏览

qt - QTest::currentTestFailed() 为 init 和 cleanup TestCase 函数返回什么?

当前使用 QT 4.8 并根据文档 QTest::currentTestFailed() “如果当前测试功能失败,则返回 true,否则返回 false。” 我不确定这是否意味着该值将给出 init 函数的失败/成功结果,或者在它之前调用的单元测试。

0 投票
0 回答
916 浏览

qt - QTest、mousePress 和 mouseMove:Qt 测试中缺少拖放事件

我有一个带有 QTreeView 和 QGraphicsSceneView 的 GUI。

树视图使用的模型支持拖动事件,图形场景支持拖放事件。

我想用 QTest: mousePressmouseMove等模拟用户操作mouseRelease

我写了这段代码:

在这里,我的鼠标真的移动到了树项目 rect,选择了它——然后移动到场景的中心,没有任何拖放。

你能告诉我,我该如何解决它?

0 投票
1 回答
273 浏览

qt - 如何将 QtTest 与 qbs 一起使用

我找不到使用 qbs 构建测试的明确示例。我试过这样

TestTask 是一个 QObject 子类。但是编译器说我错过了 main() 函数。

0 投票
1 回答
424 浏览

c++ - 关于 qtestmouse 内部失败的警告?

我正在使用 QtTest 并且刚刚更新到 Qt 5.9 并且有这种警告:

Q_FALLTHROUGH()他们都指向qtestmouse.h 所以显然我需要添加一些东西,QMAKE_CXXFLAGS但无法找出究竟是什么。

我可以忽略这些警告,pragma但想进一步了解这个主题。