问题标签 [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 投票
11 回答
37137 浏览

unit-testing - 我应该为 Qt 使用什么单元测试框架?

我刚刚开始一个需要一些跨平台 GUI 的新项目,我们选择 Qt 作为 GUI 框架。

我们也需要一个单元测试框架。直到大约一年前,我们还在为 C++ 项目使用内部开发的单元测试框架,但我们现在正在过渡到使用 Google Test 进行新项目。

有没有人有使用 Google Test for Qt 应用程序的经验?QtTest/QTestLib 是更好的选择吗?

我仍然不确定我们想在项目的非 GUI 部分中使用多少 Qt——我们可能更愿意在核心代码中使用 STL/Boost,并带有一个与基于 Qt 的 GUI 的小接口。

编辑:看起来很多人倾向于 QtTest。有没有人有将它与持续集成服务器集成的经验?此外,在我看来,必须为每个新测试用例处理一个单独的应用程序会导致很多摩擦。有什么好的方法可以解决吗?Qt Creator 是否有处理此类测试用例的好方法,或者您是否需要为每个测试用例创建一个项目?

0 投票
1 回答
1761 浏览

qt - 帮助理解 QTest 教程

在 QTestLib 的教程中,有对文件“testgui.moc”和“testqstring.moc”的引用(一个例子可以在这里找到:http ://www.englishbreakfastnetwork.org/coverage/build/qt-copy/examples /qtestlib/tutorial3/.moc/debug-shared/testgui.moc)。其中包括配置测试所需的几条信息。不幸的是,教程没有解释这些信息是什么或如何改变它。具体来说,我指的是这些行:

现在,根据我对 QT 的理解, qt_meta_stringdata_TestQString 变量是附加了方法名称的类引用——这可以通过某行来完成METHOD(toUpper()),但我不确定这是否以及如何与其他任何东西相关结果格式化。

总的来说,我想知道发生了什么。文件顶部提供的注释说它与“元对象代码”有关,根据它后来覆盖的方法,这似乎很明显。

然而,更重要的是,我想知道如何修改 qt_meta_data 数组,以便它允许我调用更多函数和/或允许我将上面的函数重命名为不同长度的名称(将方法名称从 toUpper to toApple 似乎没有问题,但是将它们更改为 toUppercase 或 toUp 都会导致测试应用程序无法按预期运行)。

***************************** 更新 ******************** ************

下面已经有一个公认的答案,但我想我应该添加这个:这些文件完全在教程中的唯一原因是因为教程作者决定不为他们的类提供 .h 和 .cpp 文件。否则它们是无用的。

0 投票
2 回答
810 浏览

qt - QTestLib:未记录的命令行参数-chart

在 Qt 4.6 QTestLib 支持命令行参数“-chart”(但这是未记录的)。

一个report.html 被创建,但是Firefox 3.6 和IE8 都不能显示除了标题“Test”之外的任何东西。当我查看 html 文件时,它有一些 JavaScript 内容和测试结果,所以应该有一些东西要显示。

由于 -chart 没有记录,我不确定我是否以正确的方式使用它。

有什么提示吗?

谢谢。

0 投票
1 回答
2480 浏览

qt - Qtestlib:QNetworkRequest 未执行

我想测试对网络服务器的异步请求。为此,我正在创建一个简单的单元测试来快速尝试几行代码:

问题是永远无法达到 reqFinished() 。如果我有一个简单的 QEventLoop 和一个 loop.exec() 就在 nam->get(req); 之后 请求被执行。

有什么提示吗?我必须在每个单元测试中使用 loop.exec() 吗?

0 投票
2 回答
5783 浏览

unit-testing - QTestLib 中的单元测试 - 在类中运行单个测试/测试/所有测试

我刚开始使用 QTestLib。我已经阅读了手册教程。尽管我了解如何创建测试,但我只是不知道如何使这些测试便于运行。我的单元测试背景是 NUnit 和 MSTest。在那些环境中,只需单击右键,就可以在运行单个测试、单个测试类中的所有测试或整个项目中的所有测试之间切换是微不足道的(至少使用 GUI)。

我在 QTestLib 中看到的只是您使用QTEST_MAIN宏在单个类中运行测试,然后分别编译和测试每个文件;或使用QTest::qExec()inmain()定义要测试的对象,然后在您想要添加/删除测试类时手动更改并重新编译。

我确定我错过了一些东西。我希望能够轻松:

  • 运行单个测试方法
  • 在整个班级中运行测试
  • 运行所有测试

其中任何一个都会调用适当的设置/拆卸功能。

编辑:赏金现在可用。必须有一个更好的方法,或者一个 GUI 测试运行器来为你或其他东西处理它。如果您在测试驱动的环境中使用 QtTest,请告诉我什么对您有用。(脚本、测试运行程序等)

0 投票
1 回答
2227 浏览

qt - 如何使用 QCOMPARE 宏来比较事件

我有 MyWindow 类,它弹出一个空白窗口,接受鼠标点击,我需要对鼠标点击事件进行单元测试

代码片段:

如何测试鼠标点击mywindow。有没有更好的方法来单元测试鼠标事件?

谢谢,韦尔斯

0 投票
1 回答
971 浏览

c++ - QT Qtestlib,单元测试

如果我要使用 QTestlib 为类实现创建一个单元测试(试图弄清楚)我会怎么做。(我知道下面简单类的单元测试可以通过其他简单的方式来完成,我试图理解 QTestlib 框架以及它是否真的是我想要的)

考虑一个简单的类(只是为了让事情变得非常清楚)

我应该如何使用 QTestlib 来测试这个类?一些信息会很棒。

如果这不是正确的方法。让我知道。还有一些关于自动化测试的信息会很好。

0 投票
1 回答
379 浏览

qt - Qtestlib 日志窗口

我将我的程序与 qtestlib 链接并包含 QTest。但是随后我得到一个日志窗口,它会在应用程序启动时提示所有 qDebugs,即使我将配置设置为发布或调试也是如此。是否可以在应用程序启动时不打开日志窗口的情况下包含 QTest?我的程序中需要 QTest 的一些功能。

请注意,我在 pro 文件中尝试了以下选项,但这没有帮助 1) CONFIG += qtestlib CONFIG -= console

2) 尝试使用 -silent 选项,但仍然会出现日志窗口。

我的应用程序中不需要此日志窗口,因为我正在使用 qInstallMsgHandler 生成的单独文件中捕获日志。

0 投票
1 回答
667 浏览

c++ - Qt UI 测试:无法执行 QTest::keyPress

我有MyForm继承自QMainWindow.

这是我的代码:

但是,当我使用QTest::keyPress它时,我得到:

错误:没有匹配的函数调用 keyPress(std::auto_ptr*, Qt::Key)

有任何想法吗?

0 投票
1 回答
13674 浏览

c++ - Qt:如何获取当前运行的窗口?

我正在编写一个模拟按键的测试应用程序,我想获得每次按键后显示的窗口。这是代码块。

在此处按 0 后,将显示一个窗口,我想检查它是什么窗口,以便稍后进行 QCompare/评估。

有任何想法吗?

更新:

使用时出现分段错误