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

qt - 使用 Qt 的 QTestLib 模块进行测试

我开始用 Qt 的单元测试系统编写一些测试。

你通常如何组织考试?每个模块类一个测试类,还是用一个测试类测试整个模块?Qt 文档建议遵循前一种策略。

我想为模块编写测试。模块只提供一个类供模块用户使用,但是在其他类中抽象了很多逻辑,除了测试公共类之外,我也想测试一下。

问题是 Qt 提出的运行测试的方法涉及QTEST_MAIN宏:

最终一个测试程序只能测试一个测试类。为模块中的每个类创建测试项目有点糟糕。

当然,可以看一下QTEST_MAIN宏,重写它,然后运行其他测试类。但是有什么东西可以开箱即用吗?

到目前为止,我是手工完成的:

0 投票
1 回答
1089 浏览

qt - QTest::keyPress 不返回 nativeScanCode

我正在使用 QTest::keyPress() 方法模拟 F1 键来测试按键事件,在我检查 nativeScanCode 时模拟 F1 键时,它返回 0 值。有人可以帮忙吗?

谢谢,

韦尔斯

0 投票
4 回答
8426 浏览

qt-creator - 如何从 QtCreator 运行 qtestlib 单元测试

我正在 Qt Creator 中开发一个 GUI 应用程序,并想为它编写一些单元测试。

我按照本指南使用 QtTestlib 进行了一些单元测试,程序编译良好。但是我该如何运行它们呢?如果调试构建,我希望它们在 GUI 应用程序启动之前运行,如果发布构建则不运行。

0 投票
2 回答
13827 浏览

qt - 使用 CMake 构建 Qt 测试

谁能给我一个使用 Cmake 构建并使用 CTest 运行的 QT 测试代码和 CMakeLists.txt 的示例。我好像找不到!

-库蒂斯

0 投票
4 回答
3293 浏览

c++ - 如何在使用单个测试项目时将所有 QtTestLib 单元测试的结果组合在一个文件中?

在我们的项目中,我们使用 QtTestLib 进行单元测试。原因是整个项目已经尽可能地使用 Qt 并且它是一个 GUI 应用程序,所以我们希望能够测试 GUI 界面。

我们的项目是由 MSVC 编译的,所以我们不希望每个测试都有一个单独的项目文件,因为它会使解决方案变得混乱。因此,我们为所有测试创建了一个项目。所有测试都应该在 CIS(持续集成)上自动化,因此我们尝试使用一些 XSLT 转换通过 XML 格式的输出文件将测试插入 Hudson。

但似乎测试的输出存在问题。如果您对所有测试使用单个 main() 并且仅将 cmd 行参数传输到每个测试:

然后你会得到一个被多次重写的结果文件。因此,如果您想使用输出文件(例如 xml)使其自动化,您将只获得其中的最后一个结果。所有其他将被覆盖。

我们已经尝试过这种方法,它无法让您使用像 Hudson 这样的持续集成系统。所以我的问题是:有没有机会将结果附加到一个输出文件中?当然,我们可以使用一些变通方法,例如通过 QTest::qExec() 运行每个测试并使用修改后的参数将结果写入单独的文件中,但这似乎不是最好的方法。理想情况下,我希望有一个结果文件来与 CIS 一起使用。

0 投票
2 回答
396 浏览

c++ - QTest for C++ 中每个测试用例消耗多少

有没有一种简单的方法可以知道 QT Test Framework for C++ 中每个测试用例消耗了多少时间?

获得一些指标将非常有帮助。

0 投票
2 回答
6551 浏览

c++ - QtTest单元测试,如何添加位于另一个项目中的头文件?

也许我遗漏了一些东西,但对我来说,为 QtTest 框架提供的唯一教程让您测试 QString 类似乎真的很愚蠢。

单元测试的典型用例是....测试您自己编写的类,但是在教程中没有提到如何在不同的项目中引用您的类进行测试,谷歌也让我失望了(我真的怀疑复制粘贴类是一个很好的方法)。

我什至翻阅了 3 种不同的 Qt 书籍,但没有提到 QtTest。

0 投票
4 回答
13107 浏览

qt - 如何在 QTestLib 对 Qt 应用程序进行单元测试时构建项目

我得到了我的 Qt 项目,并且正在使用 Qt Creator。我想对我所有的代码进行单元测试。
但是我对 QTestLib 框架还是很陌生,但每个人都推荐它来测试基于 Qt 的源代码。现在我有点困惑如何用应用程序构建测试项目。

  1. 我可以将所有源代码和测试代码放在同一个项目中吗?如果是这样,我该如何管理它们?我没有找到任何让我在一个项目中启动应用程序或开始测试的选项。
  2. 如果我把app源码和测试代码放在不同的项目中,测试项目会引用app项目,不太方便。
  3. 对于需要测试的类的批次,我如何管理测试代码?

在这种情况下,你们如何管理测试代码?谢谢。

0 投票
1 回答
547 浏览

qt - QtCreator 子目录项目

我将基于 subdirs 模板在我的 QtCreator 项目中实现以下层次结构:

项目:

  • subproject1 - 静态库
  • subproject2 - 静态库
  • subproject3 - 单元测试可执行文件

唯一的一个可执行文件将在 subproject3 中,它将链接到 subproject1 和 subproject 2。

但是构建工作正常我注意到一些可用性问题。当我运行整个项目时,它会尝试在我的库中查找可执行文件——但失败了。我必须运行 subproject3 而不是主要的。有没有可能避免这种情况?