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

0 投票
1 回答
232 浏览

c++ - 我可以从非 gtest 测试中检查 gtest_filter 吗?

我有一个用QTestLib. 那是遗产。QTest测试是从main像常规 gtest 套件一样初始化的方法调用的。

在 CI 服务器上,我们使用“时间敏感排除”过滤器调用常规 gtest,例如

现在我想尝试通过“听”来禁用其中一些对时间敏感的测试gtest_filter。所以问题是:我可以使用与此等效的东西吗?

0 投票
0 回答
48 浏览

c++ - 如何从 QwtPlot 获取 QMenu 和 QActions

我有一个QwtPlot小部件,当用户用鼠标右键单击它时,它会显示带有一些QAction 的 QMenu

在此处输入图像描述

现在,我需要实现一个自动化功能来测试它。

如何从 QwtPlot 小部件访问 QMenu 和 QActions?

我已经尝试过命令:

但是QMenu没有出现。

Qt 版本 5.3.2

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 回答
476 浏览

c++ - QTest 获取测试名称

在 Qt 单元测试中,程序如何检索正在运行的测试的名称?

代码看起来像这样:

例如,它能找出触发测试的信号/槽的名称吗?

0 投票
2 回答
972 浏览

qt - 如何使用 QTest::mouseClick 和 QAction

我对 Qt 很陌生,我需要使用QTest命名空间和QTest::mouseClick. 我的问题是我想单击一个QMenu定义为 a 的条目,QAction但该mouseClick函数不允许我将其作为参数传递(仅QWidgetsor QWindows)。

我能在这里做什么?

0 投票
1 回答
410 浏览

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

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

popUpMenuResultTable功能:

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

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

例如:

在此处输入图像描述

我已经尝试过:

但它没有显示QMenu.

我正在使用 Qt 5.3.2。

0 投票
1 回答
264 浏览

c++ - QTest - 为基于 Qt 的库编写测试并公开类

我有一个库(我们称之为MyLib),它具有以下结构:

  • mylib_global.h - 确定在编写使用库的应用程序时是否Q_DECL_IMPORTQ_DECL_EXPORT前缀后面MYLIBSHARED_EXPORT是用于公开库的特定符号:

    /li>
  • MyLib.h - 包含主类,其中还包括各种其他类:

    /li>
  • 源文件和其他类(标头+源) - 包含MyLib.

正如您所看到的,我混合了多个类——一些在与库的主类相同的头文件中定义(它控制所有其他类实例),另一些在不同的头文件中。我需要公开的类很少MYLIBSHARED_EXPORT,以便在链接时能够访问库的功能。

这在编写普通应用程序时非常好。但是我决定编写一些测试(使用 Qt 测试框架),因为我经常更改代码(现在:)),那里有许多复杂的依赖项,我想确保在每次更改后所有测试我已编写的内容已涵盖,并且功能与预期相同。

在编写测试时,我需要访问所有类以确保每个 cog 都朝着正确的方向转动(即使它没有暴露在外部)。我该如何处理?我可以MYLIBSHARED_EXPORT在所有类前面添加,但这也将允许普通用户查看内容,这只是为了间接使用。这可以使用可以通过项目设置设置的另一个更精确地进行调节#define,并且只有在定义时,所有没有前缀的类都会得到一个,否则它们将不会被暴露。虽然这个解决方案很可能会成功,但它会造成代码混乱,如果可能的话,我想避免这种情况。

0 投票
0 回答
90 浏览

xml - 使用 Qt -xunitxml 分离 Xunit 格式的数据函数

我在 Qt 5 中运行了几个单元测试,其中一些具有各种数据函数,但是当我使用 -xunitxml 标志将结果传递给 Xunit 格式时,我丢失了所有关于数据函数的数据。

有没有办法将数据功能保持为单独的测试?

例如,我有 testsuite Foo,它运行带有两个数据函数 0 和 1 的测试用例 Bar。只需在 Qt 中运行测试就可以得到这个输出

当我应用 -xunitxml 标志时,这就是我为该测试得到的:

我希望它显示为:

0 投票
1 回答
4055 浏览

python - PyQt5:鼠标单击和 QWebEngineView 中的源代码

我有一个使用 PyQt-5.5.1 的工作脚本,我现在想将其移植到新的 PyQt 版本(5.7)。调整大部分内容都很好,但我遇到了两个主要问题:(1)执行(模拟)鼠标点击,(2)访问(比如说:打印)当前显示的网页的 html 源代码分别是 QWebView 或 QWebEngineView。

例如,我可以在 PyQt-5.5.1 中使用 QWebView 执行以下操作:

我知道有关移植到 QWebEngineView 但无法将 C++ 表示法转换为工作 Python 代码的文档以及此页面。

我怎样才能使它适应 PyQt-5.7 中的 QWebEngineView?以下是 PyQt-5.5.1 的完整工作片段,对于新的 PyQt 版本失败:

  • 对于 Button1:完全没有鼠标点击反应。
  • 对于 Button2: AttributeError: 'QWebEnginePage' object has no attribute 'mainFrame',当我删除 mainframe(): 时TypeError: toHtml(self, Callable[..., None]): not enough arguments

0 投票
0 回答
572 浏览

c++ - 继承单元测试和测试构造函数

我正在使用QTest,但在我看来,这个问题比简单QTest具体更普遍。假设我们有一个简单的类:

另一个派生自的类Number

类的测试(使用QTestNumber可能如下所示:

这使我们能够推导出Tenfrom的测试,NumberTest以确保Ten不会无意中破坏Number's 接口的合同(例如,如果Number调用的虚拟方法被重写Ten或稍后更改为这样做,这可能很重要)。

注意:我使用shared_ptr因为unique_ptr不会自动捕获正确的析构函数,并且我这里没有虚拟析构函数。

继承的测试将同时运行基类的测试和它自己的测试,但是它将QVERIFY在基类测试的第二个断言()上失败,因为派生类Ten不提供构造函数(或任何其他方式)来提供测试的内容需要(Number具有特定值)。这个问题几乎只有在测试继承类的构造函数时(继承测试时)才会出现,我不确定如何最好地解决它。

我当然不想从父母的测试中挑选哪些测试将运行,哪些测试不运行,甚至更糟糕的是复制测试(省略构造函数的测试)。

另一方面,我能想到的唯一解决方案是从将被继承的测试类中省略构造函数的测试(并且对于从它派生的所有测试应该是通用的),并为基础创建单独的测试类仅用于测试其构造函数的类。毕竟构造函数并不是真正的接口的一部分。有没有其他方法可以(优雅地)解决这个问题?还是我一开始就完全错了?